【问题标题】:When to use :(colon) in rendering in jsf components何时在 jsf 组件中使用 :(colon) 进行渲染
【发布时间】:2013-09-25 07:27:15
【问题描述】:

我已经读过,我们应该使用 :(冒号) 以其他形式呈现组件。但就我而言

<h:form id="form">
    <p:growl id="messages"></p:growl>
    <p:dataTable var="e" value="#{employees.eList}" id="elist1"
        editable="true">
        <f:facet name="header">
        In-Cell Editing
    </f:facet>
        <p:ajax event="rowEdit" listener="#{employees.onEdit}" update=":form:messages"/>

        <p:ajax event="rowEditCancel" listener="#{employees.onCancel}" />

        <p:column headerText="name" style="width:30%">
            <p:cellEditor>
                <f:facet name="output">
                    <h:outputText value="#{e.name}" />
                </f:facet>
                <f:facet name="input">
                    <h:inputText value="#{e.name}" style="width:100%" />
                </f:facet>
            </p:cellEditor>
        </p:column>
..........   ...........
</p:datatable>

我想从数据表组件更新消息(咆哮)为什么我必须使用冒号 update=":form:messages"

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    相对于实现the NamingContainer interface 的父组件搜索所有相对客户端ID(不以: 开头的那些)。正如您在链接的 javadoc 中看到的那样,至少是所有 UIForm 和 UIData 组件。 &lt;h:form&gt; 就是这样一个。 &lt;p:dataTable&gt; 是另一个。

    在您的特定情况下,&lt;p:ajax&gt; 包含在 &lt;p:dataTable&gt; 中。因此,&lt;p:ajax update="messages"&gt; 将在 &lt;p:dataTable&gt; 的上下文中查找 ID 为 messages 的子组件。但是,由于没有,它不会找到任何东西。您实际上需要使用绝对客户端 ID,因为它在当前 NamingContainer 父级的上下文之外。

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 2012-03-10
      • 2010-12-14
      • 2011-02-06
      • 2011-07-07
      相关资源
      最近更新 更多