2011-07-05 13 views
1

複合コンポーネント(cc)はinputText-Fieldを作成します。重要な部分は、それがモデルのプロパティ "可視"に応じてレンダリングされることです。モデルはparm "name"によってコンポーネントに渡されます。JSF 2コンポジットコンポーネントレンダリングの問題

<cc:interface> 
    <cc:attribute name="name" required="true"/> 
</cc:interface> 
<cc:implementation componentType="ch.sbi.pt.components.PMSInputText"> 
     <h:inputText value="#{cc.attrs.name.value}" rendered="#{cc.attrs.name.visible}"/> 
</cc:implementation> 

私は2つのセル/行を持つpanelGridを持っています:最初の行にはラベルとCCがあり、2番目は重要ではありません。ラベルは、自分自身と同じmodel-propertyでレンダリングされます。 「false」を返す-property「目に見える」場合

<h:panelGrid columns="2"> 
    <h:outputText value="Name" rendered="#{person.name.visible}"/> 
    <sbic:pmsInputText name="#{person.name}"/> 
    <h:outputText value="Next Label"/> 
    <sbic:pmsInputText name="#{something.name}"/> 
</h:panelGrid> 

結果(問題が)、以下の通りである:コンポーネントの なし(!完璧)レンダリングされていませんしかしccの結果のHTMLは、空のセルを離れた(たとえば、私の知る限り理解し、これはライフサイクル(JSF対JSTL)に関係しています

<table> 
<tbody> 
<tr> 
<td></td> 
<td>Next Label</td> 
</tr> 
.... 

:私のccが<h:outputText../>前にレンダリング醜いレイアウトさHTML-表(1つのセルをオフセット)になり<td></td>)どうすれば空のセルを取り除くことができますか(例えば<td></td>)?ここに何かがないのですか?

あなたの助けを頼りにして、エキスパート! Marc

+0

「JSTL vs JSF」とはどういう意味ですか?これにはJSTLの手段がありません。 JSTLの内容を混乱させたり、誤解したりすることはありませんか?読んでください:http://stackoverflow.com/tags/jstl/info – BalusC

+0

はい私はだった。私のせい。ありがとうございました。 – MarcG

答えて

2

これは完全に予想されます。複合部品です。その子供たちだけがそうではありません。代わりに複合コンポーネントにrendered属性を移動する必要があります。

<sbic:pmsInputText name="#{person.name}" rendered="#{person.name.visible}" /> 
+0

OK、問題が表示されます。ありがとうございました。コンポーネントの私の意図は、 "レンダリング"と "読み取り専用"の属性をカプセル化して効率を高め、可読性を向上させることでした(xhtmlの名前属性のみ)。私はjsfで小さなwebappのプロトタイプを作るための命令を与えられました。私は、複雑さのためにjsfに関する疑問を消すためにクリーンで簡単なコードで印象づけたかったのです。 – MarcG

+0

コンポジットコンポーネントのwikiページの例がより役に立ちます。質問の下の '[composite-component]'タグの上にマウスを置き、ポップアップが表示されるまで待ってから、* info *リンクをクリックしてください:http://stackoverflow.com/tags/composite-component/infoラベル/入力/メッセージグループではなく、単純なタグファイルを使用することをお勧めします。この回答には例があります:http://stackoverflow.com/questions/5713718/how-to-make-a-grid-of-jsf-composite-component/5716633#5716633 – BalusC

+0

ありがとう、BalusC。私は、提案されたタグファイルを使用します。私はこのことに執着していたので、あなたは私の一日を救った... – MarcG