无法更新<p:outputpanel> </p:outputpanel>的子项

时间:2015-04-02 23:54:29

标签: ajax jsf primefaces mojarra

我无法让孩子们在p:outputPanel下调用&#39; emailDetail&#39;更新。相反,我设置更新&#39;输出&#39;该组件更新正常。我做了什么明显的错误或者我不能这样更新吗?

<ui:composition template="/WEB-INF/xhtml/templates/basictemplate.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.org/ui"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core">

    <ui:param name="header" value="small-header"/>

    <ui:define name="content">

        <div style="margin-top: 50px;"></div>

        <h:form id="form">
            <p:dataTable id="myDataList" value="#{emailView.inboxEmailHeaders}" var="emailHeader" 
                         selectionMode="single" selection="#{emailView.selectedEmailHeader}"
                         rowKey="#{emailHeader.emailId}" scrollable="true" scrollRows="" scrollHeight="200">

                <p:ajax event="rowSelect"
                        listener="#{emailView.onRowSelect}"
                        update=":emailDetail" />

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

                <p:column headerText="Id" width="20%">
                    <h:outputText value="#{emailHeader.emailId}" />
                </p:column>
                <p:column headerText="Id">
                    <h:outputText value="#{emailHeader.sender}" />
                </p:column>
                <p:column headerText="Id">
                    <h:outputText value="#{emailHeader.subject}" />
                </p:column>

            </p:dataTable>
        </h:form>

        <h:outputText id="outside" value="#{emailView.selectedEmailHeader.subject}"/> 

        <p:outputPanel id="emailDetail" style="text-align:center;">
            <p:panelGrid columns="2" rendered="#{not empty emailView.selectedEmailHeader}" columnClasses="label,value">
                <f:facet name="header">
                    <h:outputText value="sit"/> 
                </f:facet>
                <h:outputText value="Id:" />
                <h:outputText value="#{emailView.selectedEmailHeader.emailId}" />
                <h:outputText value="Recieved" />
                <h:outputText value="#{emailView.selectedEmailHeader.recieved.toString}" />
                <h:outputText value="Subject" />
                <h:outputText value="#{emailView.selectedEmailHeader.subject}" />
            </p:panelGrid>
        </p:outputPanel>

    </ui:define>

</ui:composition>

感谢您的帮助。

Ectomorph。

1 个答案:

答案 0 :(得分:-1)

解决。我将<p:ajax>标记替换为<f:ajax>update替换为render,因此标记现在看起来像这样......

<f:ajax
    event="rowSelect"
    listener="#{emailView.onRowSelect}"
    render=":emailDetail" />

<p:ajax>的问题?希望这有助于其他人。

干杯。 外生。