p:commandbutton action在p:dialog中不起作用我有ap:对话框,里面有一个面板。问题是“保存”按钮的操作方法不起作用。它甚至不调用该方法。我可以达到方法def。使用ctrl + lm,因此方法名称没有问题。<h:body>
<h:form id="createAppUserForm" prependId="false">
.... <p:dialog id="newRoleDialogId"
header="Add New Role"
resizable="true"
draggable="true"
widgetVar="newRoleDetailsDialog"
appendToBody="true"
>
<p:panel id="newRoleDialogPanel">
<p:panelGrid id="newRoleDialogPanelGrid" columns="2" style="width: 100%" styleClass="panelGridWithoutBorder">
<h:outputText value="Role Name :"/>
<p:inputText value="#{createAppUserController.selectedRole.name}"/>
<h:outputText value="Role Desc :"/>
<p:inputText value="#{createAppUserController.selectedRole.description}"/>
</p:panelGrid>
<center>
<p:commandButton value="Save"
update="roleListDataTable newRoleDialogPanelGrid growlCreateAppUser"
oncomplete="if (!args.validationFailed) newRoleDetailsDialog.hide()"
action="#{createAppUserController.saveNewRole()}"/>
<p:commandButton value="Cancel"
immediate="true"
onclick="newRoleDetailsDialog.hide()" />
</center>
</p:panel>
</p:dialog>
</h:form>
</h:body>
3 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
该对话框与a一起使用时appendToBody/appendTo="@Body"
必须有自己的形式。
<p:dialog> <h:form> ... </h:form></p:dialog>
因为,当对话框生成HTML输出时,它会被JavaScript重新定位到HTML的末尾<body>
,导致它不再以任何形式存在。生成的HTML DOM树最终看起来像这样(使用webbrowser的开发工具来查看它):
<body> ... <form id="createAppUserForm"> ... </form> ... <div id="newRoleDialogId" class="ui-dialog ..."> ... </div></body>
在appendToBody="true"
这里起到了重要作用。身体的末端确保了通过JavaScript显示模态对话框的简单和最佳的跨浏览器兼容性。
同样是真实的方式为p:overlayPanel
用appendTo...
但也要确保在“移动”之前p:dialog
,没有嵌套h:form
。所以防止
<h:form> ... <p:dialog> <h:form> ... </h:form> </p:dialog> ...</h:form>
虽然它最终会像
<body> ... <form id="createAppUserForm"> ... </form> ... <div id="newRoleDialogId" class="ui-dialog ..."> <form> ... </form> </div></body>
它最初是无效的HTML
也可以看看:
添加回答
举报
0/150
提交
取消