【问题标题】:How to use <ui:include> inside a <h:dataTable>?如何在 <h:dataTable> 中使用 <ui:include>?
【发布时间】:2012-06-16 21:49:56
【问题描述】:

我想多次动态地包含&lt;ui:include&gt; 一页。

代码:

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

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

【问题讨论】:

    标签: jsf datatable facelets uiinclude


    【解决方案1】:

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

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

    1. 使用&lt;c:forEach&gt; 而不是&lt;h:dataTable&gt;,这也在视图构建期间运行。

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

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

    另见:

    【讨论】:

      猜你喜欢
      • 2012-12-29
      • 2011-07-14
      • 2012-03-08
      • 2012-12-05
      • 1970-01-01
      • 2012-06-13
      • 2015-07-13
      • 2011-04-05
      相关资源
      最近更新 更多