我是我的网络应用程序,我有以下在对话框中打开的表单:
<!-- 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;
}
}