0

我有一个多行的 panelGrid。一些行是用 c:forEach 生成的,因为 ui:repeat、p:dataTable 和 p:dataList 不会'呈现 ( ui:repeat JSF 2.0 无法呈现迭代 p:row primefaces )。

我的目标是更新迭代中生成的行(并且更新后的大小和内容会有所不同),但是我没有可以引用的具有 id 的组件。不,我不能使用@form。

<p:commandButton value="Update" action="#{someBean.someAction}" process="someThing" update=" ??? ">

<p:panelGrid>
  <p:row> 
   ...
   </p:row>
  <c:forEach var="projectDto" items="#{someBean.someDtos}" varStatus="i">
    <p:row> 
     ...
     </p:row>
  </c:forEach>
</p:panelGrid>

有没有办法做到这一点?也许某种围绕迭代的虚拟组件?

强尼

PS:我已经在 Primefaces 论坛(http://forum.primefaces.org/viewtopic.php?f=3&t=22999)上问过这个问题。答案(感谢 jordandenison)真的是“专有的”,没有人(包括我半年之后)会明白那是怎么回事。所以也许还有另一种方式。

4

1 回答 1

0

将 panelGrid 绑定到 bean 属性。

<p:panelGrid binding="#{someBean.panelGrid}"/>

然后在 java 代码中添加行。

Row row = new Row();

HtmlOutputText text = new HtmlOutputText();
text.setValue("text");

column = new Column();
column.getChildren().add(text);

row.getChildren().add(column);

panelGrid.getChildren().add(row);

Row、Column 和 PanelGrid 应该来自 org.primefaces.... 包。

于 2012-07-03T14:24:16.790 回答