2012-02-13 10 views
1

私は、ICEfaces 1.8を使ってJSF 1.2データテーブルを持っています。ある列では、バッキングビーンのテキストを表示し、その右に新しい行に折り返さずに同じ行に小さなイメージを表示したいと考えています。イメージをテーブルセルにテキストでインラインで表示するにはどうすればいいですか?

画像は実際には画像属性が設定されたice:commandButtonコンポーネントです。画像をクリックすると、ice:panelPopupのパネルが表示されます。ここで

のdataTable内の列の関連するコードです:

<ice:column id="col1"> 
    <ice:outputText escape="false" value="#{document.column1Value}" /> 
    <ice:form> 
     <ice:commandButton actionListener="#{bean1.open}" image="images/popup.gif"> 
      <f:attribute name="docParam" value="#{document.parameter}" />       
     </ice:commandButton> 
     ... 
    </ice:form> 
</ice:column> 

私はwhite-space:nowrapfloatを含め、様々なタグにCSSスタイル情報を追加することのすべての種類を試してみましたが、所望の効果を得ることができませんでした。

+0

私は問題を見たらわからない(ノートでは、style属性は、実際にあなたは、CSSファイルの代わりとスタイルクラスを使用する必要があり、代表的な上記の例です)。すでにテキストと画像ボタンをハッキーな2列のテーブルに ' 'で入れましたが、それでもまだ下に表示されていますか?または、テーブルを使わずに達成する方法を実際に尋ねていますか? – BalusC

+0

@BalusC。 ''の画像は問題ではありません。私はそのコンポーネントを取り出してしまったかもしれないと思うが、私はそれをちょうど含んだ。問題は、コマンドボタン(images/popup.gif)に表示されるイメージが '#{document1.column1Value} 'から来るテキストの下に表示されていることです。私はそれらを列セル内でインラインで表示させるようにしています。 – YWE

+0

ああ、私は今あなたが意味するものを参照してください。私は質問からいくつかのコードノイズを削除し、答えを掲載しました。 – BalusC

答えて

2

<ice:form>は、デフォルトではblock level elementあるHTML <form>を生成し、それは常に新しい行から始まります。 <form>のスタイルをdisplay: inlineに設定する必要があります。

<ice:form style="display: inline;"> 

また、そのテキストをフォームに移動することもできます。

<ice:form> 
    <ice:outputText escape="false" value="#{document.column1Value}"/> 
    <ice:commandButton actionListener="#{bean1.open}" image="images/popup.gif"> 
     <f:attribute name="docParam" value="#{document.parameter}" />       
    </ice:commandButton> 
    ... 
</ice:form> 

いずれかの方法で、あなただけの、まだ、セルの幅に残って少し余裕があるとき空白で包まれているから、セルの内容を阻止する必要があります。両方の要素の共通の親要素white-space: nowrapを設定することで実現できます。最初のアプローチ(フォームをdisplay: inlineに設定)の場合、それは<td>エレメントになり、2番目のアプローチ(同じフォーム内にテキストを置く)の場合は、<form>エレメントになります。例えば。

<ice:form style="white-space: nowrap;"> 
    <ice:outputText escape="false" value="#{document.column1Value}"/> 
    <ice:commandButton actionListener="#{bean1.open}" image="images/popup.gif"> 
     <f:attribute name="docParam" value="#{document.parameter}" />       
    </ice:commandButton> 
    ... 
</ice:form> 

+0

それは私にそれを理解するようになった。 outputTextをフォームの中に移動し、フォーム上に 'white-space:nowrap'を設定しました。しかし動作させるには、 'display:inline'を' 'に追加しなければなりませんでした。タグは' 'しか生成しないので、意味がありません。そして、ICEfacesがスパンに加えるCSSクラスを見ると、それを引き起こすものはありません。 – YWE

+1

あなたは大歓迎です。それは確かに意味がありません。スパンのCSSが他の場所で変更されている可能性はありますか? Chrome/Firebug/IE9のようなWeb開発ツールは、右クリックして*要素を検査するときに特定の要素のすべてを表示できます。 – BalusC

+0

ああ、スパンは別の場所にブロック表示を設定していました。私はFirebugを使うまでそれを見たことがありませんでした。ありがとう。 – YWE

関連する問題