【发布时间】:2023-04-07 20:42:01
【问题描述】:
我们为我们的项目创建了一个 JSF 表组件,它使用 <ui:repeat> 创建表。在表中添加表的新要求(第二个表位于一行中并且是可折叠的)给我们带来了麻烦,因为<ui:repeat var="row" ...> 是在表组件内静态设置的,而内表使用外部的行变量遍历列表时的表。现在我想要创建的是这样的:
<div>
<myfw:mytable dataModel="#{bean.user}" varName="user" ...>
<myfw:mycolumn value="#{user.name}"/>
<myfw:myexpendablecolumn>
<myfw:mytable dataModel="#{bean.acl}" varName="acl" ...>
<myfw:mycolumn value="#{acl.name}"/>
</myfw:mytable>
</myfw:myexpendablecolumn>
</myfw:mytable>
</div>
在表格组件中应设置 var 属性 ...
<composite:interface>
...
<composite:attribute name="varName" required="false"
type="java.lang.String" default="row" />
</composite:interface>
<composite:implementation>
...
<ui:repeat var="#{varName}" value="#{cc.attrs.dataModel.wrappedData}"
varStatus="loop">
<div class="floating_table_row">
<composite:insertChildren />
</div>
</ui:repeat>
</composite:implementation>
...但遗憾的是,这不起作用。我用<c:forEach> 试过了,但结果是一样的,列的值是空的,没有数据显示。有没有办法动态设置<ui:repeat>的var属性?
【问题讨论】:
标签: jsf parameter-passing repeat composite-component uirepeat