jsf - 如何使用 <ui :include> inside a <h:dataTable>?

标签 jsf datatable facelets uiinclude

我想加入<ui:include>一页动态多次。

代码:

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

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

最佳答案

<ui:include>作为在 View 构建期间执行的标记处理程序,而 <h:dataTable>就像是在 View 渲染期间执行的 UI 组件。这意味着 <ui:include><h:dataTable> 之前只执行一次因此不在迭代期间。您实际上最终会在每一行中得到完全相同的包含源。提交表单时,将逐行处理行,直到最后一行,这就是为什么您有效地最终得到最后一行的值的原因。
基本上有两种方法可以解决这个问题:

  • 使用<c:forEach>而不是 <h:dataTable> ,这也在 View 构建期间运行。
  • 使用标签文件或复合组件而不是 <ui:include> ,这也在 View 渲染期间运行。

  • 无论哪种方式,您还需要确保输入值绑定(bind)到 var 后面的对象。数据表的属性,而不是一个和相同的支持 bean 属性。
    也可以看看:
  • JSTL in JSF2 Facelets... makes sense? (<ui:include> 与 JSTL 属于同一类别)
  • When to use <ui:include>, tag files, composite components and/or custom components?
  • 关于jsf - 如何使用 <ui :include> inside a <h:dataTable>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11023331/

    相关文章:

    jsf - 如何动态地将参数传递给资源包中的消息

    java - 避免 javax.servlet.ServletException

    datatable - Flutter DataTable - 点击行

    c# - 如何在数据表上进行此查询?

    javascript - 无法使用 jquery.cookie 保留复选框值

    java - JSF - 为受限页面实现过滤器

    java - Jsf Netbeans、Hibernate、获取 session 工厂找不到符号错误

    html - 是否可以将 JSF+Facelets 与 HTML 4/5 一起使用?

    java - JSF网页包含

    javascript - JSF:选项的 SelectOneRadio 快捷方式