Jsf c:forEach内部基本面(例如p:panelgrid)内部ui:重复
我必须亲自制作一份表格清单。其中每一个都有可变数量的列(具有固定行) 要执行此操作,我首先将Jsf c:forEach内部基本面(例如p:panelgrid)内部ui:重复,jsf,jsf-2,primefaces,panelgrid,Jsf,Jsf 2,Primefaces,Panelgrid,我必须亲自制作一份表格清单。其中每一个都有可变数量的列(具有固定行) 要执行此操作,我首先将放在中:因此我正确地生成了一个表列表 然后,为了直观地生成列,我尝试将或放在中。结果我没有得到任何行 我在这里写了一个简单的例子。在beantestBackingBean中,我定义(并初始化)了变量ArrayList tables。这是无法产生预期结果的xhtml: <ui:repeat var="table" value="#{testBackingBean.tables}"> &l
放在
中:因此我正确地生成了一个表列表
然后,为了直观地生成列,我尝试将
或
放在
中。结果我没有得到任何行
我在这里写了一个简单的例子。在beantestBackingBean
中,我定义(并初始化)了变量ArrayList tables
。这是无法产生预期结果的xhtml:
<ui:repeat var="table" value="#{testBackingBean.tables}">
<p:panelGrid>
<f:facet name="header">
<p:row>
<p:column >header of #{table}</p:column>
</p:row>
</f:facet>
<p:row>
<c:forEach var="row" items="${table}">
<p:column>#{row}</p:column>
</c:forEach>
</p:row>
</p:panelGrid>
</ui:repeat>
然后我得到一个空的结果。(我知道,这是一个不同的问题)从XHTML源代码到生成的HTML输出的转换是一个两步过程
UIComponent
实例树中转换,如FacesContext#getViewRoot()
所示
UIViewRoot\encodeAll()方法开始
标记一样,几个JSF
标记和只有少数Facelets
标记在视图构建期间运行。与所有JSF
标记一样,几个Facelet
标记和少数JSF
标记在视图渲染期间运行
和
换句话说,在视图构建期间,在JSF组件树中基于
多次重新创建
中声明的UI组件,然后在视图呈现期间分别生成各自的HTML输出。
中声明的UI组件在视图构建期间仅在JSF组件树中创建一次,然后根据
重用多次,以在视图呈现期间生成HTML输出
具体问题的原因是,
仅在视图渲染时可用,而不是在视图生成时可用。
基本上是在视图构建期间将要运行的{null}
检索为值
您可以通过将外部
替换为
来解决此问题。尽管我想知道你是否能更好地使用
另见:
c:forEach
,那么就不会生成面板组。不幸的是,我的数据结构是一个bean数组,每个bean都有一些属性。感谢您的解释:)
<c:forEach items="${testBackingBean.tables}" var="tabella">
current element: #{tabella}
</c:forEach>