显示绑定到p:dataTable

时间:2016-01-08 16:15:58

标签: primefaces

我有一个分层模型,显示在嵌套表格中:

root (root bean)
+- property1 (property of root)
+- children (collection of child beans)
   +- property2 (property of child)
   +- subchildren (collection of subchild beans)
      +- property3 (property of subchild)

我正在我的整个模型上运行自定义验证,即在以下路径中向FacesMessages添加FacesContext

  • 根:property1
  • 根:儿童:0
  • 根:小孩:0:property2
  • 根:小孩:0:subchildren:0
  • 根:小孩:0:subchildren:0:property3
  • ...
  • 根:儿童:4:subchildren:3:property3

FacesMessages可以绑定在每个级别(根bean,属性和集合中的bean)。

托管bean myBean正在保存正在编辑的模型的根bean。

要编辑此模型,我正在使用类似的东西(简化为极端以展示我遇到的问题):

<h:form id="root">

    <h:messages for="root">

    <h:inputText value="#{myBean.root.property1}" id="property1" />
    <h:messages for="property1">

    <h:dataTable value="#{myBean.root.children}" var="child" id="children">

        <f:facet name="header">children</f:facet>

        <h:column>
            <f:facet name="header">*</f:facet>
            <h:messages for="children" />
        </h:column>

        <h:column>
            <f:facet name="header">property2</f:facet>
            <h:inputText value="#{child.property2}" id="property2" />
            <h:messages for="property2">
        </h:column>

        <h:column>
            <f:facet name="header">subchildren</f:facet>
            <h:dataTable value="#{child.subchildren}" var="subchild" id="subchildren">
                ...
            </h:dataTable>
        </h:column>

    </h:dataTable>

</h:form>

为简单起见,表(*)的第一列用于显示当前行bean的验证消息(因此,在bean级别,如root:children:0,而不是其属性)。

使用标准的html taglib(h:dataTable)时,一切正常,我可以在每个级别看到验证消息。

但是当我尝试使用primefaces表(p:dataTable/p:column/p:messages)而不是(h:dataTable/h:column/h:messages)时,我看不到集合中bean的验证消息:

  • root:children:0(未显示)
  • root:children:0:subchildren:0(未显示)

可以很好地显示链接到这些bean属性的消息:

  • root:children:0:property2(显示)
  • root:children:0:subchildren:0:property3(显示)

如果我使用ui:repeat而不是h:dataTable重写我的标记,那么一切都有效,所以我认为这个问题出现在主要问题中。

也许我推动的事情有点太过分了,所有事情都与ui:repeath:dataTable一起运气,但是我想让它与primefaces一起工作,因为我想使用{{1} }。

我能做些什么才能让它发挥作用,还是在主要面孔中是 bug

感谢您阅读我的问题 召唤BalusC JSF上帝的咒语到此为止! : - )

0 个答案:

没有答案