0

我是我的网络应用程序,我有以下在对话框中打开的表单:

<!-- Event edit -->
    <p:dialog id="editEvent" 
              widgetVar="dlgEdit" 
              modal="true"
              resizable="true" 
              closable="true"
              header="Edit event">
        <p:panelGrid columns="1" 
                     styleClass="gridNoLine">
            <p:panelGrid columns="1">
                <p:messages id="mEditMessages"
                            closable="true" 
                            redisplay="true"/>
            </p:panelGrid>
            <p:panelGrid columns="2" styleClass="gridNoLine">
                <h:outputLabel value="..." />
                <p:inputText value="#{eventBean.event.eventName}"
                             required="true"
                             requiredMessage="XXX"/>
            </p:panelGrid>
            <p:panelGrid columns="2" styleClass="gridNoLine">
                <h:outputLabel value="..." />
                <p:inputTextarea value="#{eventBean.event.eventDescription}"
                                 required="true"
                                 requiredMessage="XXX" />
            </p:panelGrid>

            ...

            <p:commandButton id="cbUpdateEvent" 
                             value="Update"
                             actionListener="#{eventBean.update}"
                             oncomplete="handleAction(xhr, status, args);"
                             process="@form"
                             update="mEditMessages OTHERCONTROLS"/>

        </p:panelGrid>
    </p:dialog>

此对话框从 DataTable 的每一行的 commandButton 列打开,如以下代码所示:

<p:dataTable value="#{eventBean.events}" 
             var="event">
    <p:column styleClass="commandColumn">
        <f:facet name="header">
            <h:outputLabel value="Editar"/>
        </f:facet>
        <p:commandButton image="ui-icon-pencil" 
                     title="Edit"
                     update="editEvent"
                     oncomplete="dlgEdit.show();"
                     process="@this">
            <f:setPropertyActionListener value="#{event}" target="#{eventBean.event}" />
        </p:commandButton>
    </p:column>
    ...
 </p:dataTable>

问题是:当我打开对话框时,清除一个随机字段(只是为了测试验证)并单击更新按钮,对话框上会显示一条警告消息。美好的。但是当我清除另一个字段并单击更新按钮时,与该控件关联的所需消息不会显示。然后当我关闭对话框并再次单击任何行的任何更改列时,什么也没有发生。我可以在浏览器控制台上看到以下消息:

Uncaught SyntaxError: Unexpected token { 

OBS:如果我单击编辑命令并且不修改任何字段而只是关闭,应用程序工作正常,我可以查看其他记录的编辑对话框。

更新:这是 template.xhtml 代码:

<h:body>
    <div class="structure"> 
        <div class="top">
        </div>
        <!--Base Menu -->
        <h:form id="menu">
            <div class="menu">
                <p:menubar autoDisplay="true" >
                    ...
                </p:menubar>
            </div>
        </h:form>
        <!-- Conteúdo -->
        <div class="left_content">

            <ui:insert name="content">
            </ui:insert>

        </div>
        ...
    </div>
</h:body>

这是handleAction代码:

function handleAction(xhr, status, args){
    switch(args.key){
        case 'update': 
            dlgEdit.hide();
            break;
    }
}
4

1 回答 1

1

我发现了错误。我只是在这里指出的两次导入 primefaces jar 。我的 WEB-INF/lib 文件夹和 pom.xml 文件中有一个 primefaces-3.4.jar。我确实删除了 WEB-INF/lib 中的 jar,一切正常。

于 2012-11-27T03:17:47.593 回答