java-具有可定制内容的JSF迭代复合组件
作者:互联网
我想创建一个复合组件,可以将迭代元素的原始布局传递到复合组件.
这是一个简化的示例,可以工作:
<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}” />正确地.
解决方法:
您可以使用< composite:insertChildren />才能将定义的子组件“传递”到复合组件定义.另外,我建议使用< ui:repeat>而不是< c:forEach>因为它是一个真正的迭代组件,并且更适合JSF.这是一个如何实现您的组件的示例:
<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>
标签:composite-component,jsf,jsf-2,java 来源: https://codeday.me/bug/20191031/1977375.html