2011-12-28 13 views
0

jsf2faceletsを使ってアプリケーションを開発しています。私の見解の1つでは、データベースからデータを表示しようとしており、2つのネストループを使用しています。 2番目のループは、最初のループで宣言されたvarの属性であるvarを使用します。フェイスレットのループループ

しかし、動作していません。

<ui:repeat value="#{MyBean.Vect}" var="item"> 
    <h:outputText value="${item.attr}" /> <br /> 
    <ui:repeat value="#{item.nestedtVect}" var="product" > 
     <h:outputText value="${product.name}" /> <br /> 
    </ui:repeat> 
</ui:repeat> 

第1のループ作品ではなく、両方:

は、ここに私のコードの関連する部分です。

+1

'nestedtVect'はタイプミスではありませんか?正確なコードを投稿しましたか? – mrembisz

答えて

4

item.nestedtVectはnullではなく、実際に商品がありますか?あなたのFaceletは一見正しいと思われる。

など。この最小限の例を考えてみます。

バッキングBean:

@ManagedBean 
public class NestedLoopBacking { 

    String[][] items = { {"A", "B"}, {"1", "2", "3"} }; 

    public String[][] getItems() { 
     return items; 
    } 
} 

にfacelet:

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 

    <h:body> 

     <ui:repeat value="#{nestedLoopBacking.items}" var="item"> 
      <ui:repeat value="#{item}" var="content"> 
       <h:outputText value="${content}" /> 
       <br /> 
      </ui:repeat> 
     </ui:repeat> 

    </h:body> 
</html> 

これだけの作品™。ネストされたコレクションが空であるかどうかを明示的にテストすることができます。

<h:outputText value="Collection empty" rendered="#{empty item.nestedtVect}"/> 
<h:outputText value="Collection not empty" rendered="#{!empty item.nestedtVect}"/> 

p.s.

質問には関係ありませんが、あなたの名前を見ることができます。 MyBean.Vectは本当に良い名前ではなく、いずれもattritem.attrにありません。また、明示的な理由がないために、延期された即時構文(#{}および${})を混在させているようです。

関連する問題