慕慕森
2019-08-05 15:54:23
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的開發(fā)工具來查看它):
<body> ... <form id="createAppUserForm"> ... </form> ... <div id="newRoleDialogId" class="ui-dialog ..."> ... </div></body>
在appendToBody="true"
這里起到了重要作用。身體的末端確保了通過JavaScript顯示模態(tài)對話框的簡單和最佳的跨瀏覽器兼容性。
同樣是真實的方式為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
提交
取消