以下の機能を持つrich:dataTable(または拡張)を作成する必要があります。
Productオブジェクトのコレクションを持つクラスCompanyがあります。次の表を示します。
サブテーブルを使用してこれを行う方法はまだわかりません(すべての例で、subTableにはマスターテーブルとまったく同じ列があることがわかりました)。おそらく、最初の2列で行スパンを操作する必要がありますが、それでも方法がわかりません。
誰かがこれに疑似コードを提供できますか?
乾杯!
更新1:左側の列の行間隔をリストまたは製品のサイズとして設定してから、:
残念ながら、これは私にはうまくいきませんでした。レンダリングされたタグのためではなく、a4j:repeat内の列がまったく表示されないためです。ループが正しいのは、標準テキストを他に印刷すると表示されるためです。
行間隔を達成する方法はありますか、それとも壁に頭をぶつけていますか?
更新2:問題はおそらくこの記事に関連しており、<a4j:repeat>などの反復コンポーネントとタグ<c:forEach>の違いを示しています。1つ目はレンダリング時に行われ、2つ目はJSFコンポーネントがページのコンポーネントツリーに配置されたときに以前に動作します。
rich:columnsをa4j:repeatの外に出そうとしたところ、レンダリングされました(もちろん、期待どおりではありませんが、実際にレンダリングされています)。
複雑なforEachがなくてもこれを行うことができます。subTableとrowKeyVarを利用する必要があるだけです。
例えば:
<rich:dataTable
value="#{backingBean.companyList}"
rows="100"
var="company">
<f:facet name="header">
<rich:columnGroup>
<rich:column>Company Name</rich:column>
<rich:column>Company Email</rich:column>
<rich:column>Product Name</rich:column>
<rich:column>Product Email</rich:column>
</rich:columnGroup>
</f:facet>
<rich:subTable value="#{company.products}" var="product" rowKeyVar="rowKey">
<rich:column rowspan="#{company.products.size()}" rendered="#{rowKey eq 0}">
#{company.name}
</rich:column>
<rich:column rowspan="#{company.products.size()}" rendered="#{rowKey eq 0}">
#{company.email}
</rich:column>
<rich:column>
#{product.name}
</rich:column>
<rich:column>
#{product.email}
</rich:column>
</rich:subTable>
</rich:dataTable>
私にとって完璧にレンダリングします。コレクションでsize()を呼び出すことができるJboss Extended ELを備えたSeamを使用していることに注意してください。これを使用していない場合は、prs:collectionSize()またはfn:length()を代わりに使用できます。
これは、Richfacesデータスクローラーでもうまく機能します。
お役に立てれば。
D.
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加