5

我想<ui:include>多次动态地包含一页。

代码:

<h:dataTable ..>
    <h:column>
        <ui:include  src="#{create_page}">
    <h:column>
<h:dataTable>

现在,当我提交它时,它只保留最后一个 inlude。它只记住最后包含的页面的值。我想要每个 create_page 中的唯一实体对象。我怎样才能做到这一点?

4

1 回答 1

6

<ui:include>is 作为在视图构建期间执行的标记处理程序,而is<h:dataTable>作为在视图渲染期间执行的 UI 组件。这意味着在迭代之前<ui:include>只执行一次,因此不在迭代期间执行。您实际上最终会在每一行中得到完全相同的包含源。提交表单时,行将被逐一处理,直到最后一行,这就是您有效地最终得到最后一行的值的原因。<h:dataTable>

基本上有两种方法可以解决这个问题:

  1. 使用<c:forEach>代替<h:dataTable>,这也在视图构建期间运行。

  2. 使用标签文件或复合组件代替<ui:include>,这也在视图渲染期间运行。

无论哪种方式,您还需要确保输入值绑定到数据表var属性后面的对象,而不是绑定到一个相同的支持 bean 属性。

也可以看看:

于 2012-06-13T21:19:59.193 回答