3

繰り返し要素の実際のレイアウトをコンポジットに渡すことができるコンポジットコンポーネントを作成したいと考えています。これは単純化された例であり、機能します。

<composite:interface>
    <composite:attribute name="value"/>
</composite:interface>

<composite:implementation>
    <ul>
        <c:forEach var="i" items="#{cc.attrs.value}">
            <li>
                <h:outputText value="Test #{i.name}"/>
            </li>
        </c:forEach>
    </ul>

h:outputTextしかし、コンポーネントにハードコーディングしたくありません。コンポーネントを使用するとき、私は次のようなものを作ろうとしています:

<my:list var="user" value="#{myBean.userList}">
  <h:outputText value="Test #{user.name}"/>
</my:list>

を使用する必要があると想定していますが、コンポーネントこれを処理して子 に正しくアクセスvarする方法がわかりません。<h:outputText value="Test #{user.name}"/>

4

1 に答える 1

4

<composite:insertChildren />定義された子コンポーネントを複合コンポーネント定義に「渡す」ことができるようにするために使用できます。また、実際の反復コンポーネントであり、JSF により適しているため、<ui:repeat>代わりに使用することをお勧めします。<c:forEach>コンポーネントを実装する方法の例を次に示します。

<composite:interface>
    <composite:attribute name="value"/>
</composite:interface>

<composite:implementation>
  <ul>
     <ui:repeat var="item" value="#{cc.attrs.value}">
       <li>
           <composite:insertChildren />
       </li>
     </ui:repeat>
  </ul>
</composite:implementation>

使用法:

<my:list value="#{myBean.userList}">
  <h:outputText value="Test #{item.name}"/>
</my:list>
于 2012-11-13T08:33:09.877 に答える