我有一个功能,我必须通过我的确认对话框调用我的托管bean,这是用于删除按钮。当用户单击“删除”按钮时,会弹出一个确认对话框,并且{“1}}”是“我的相对托管bean应该被调用。但我无法做到。
onclick
答案 0 :(得分:13)
当p:confirmDialog
与global="true"
一起使用时,确认/取消按钮(有点不直观地)由这两个styleClasses标识:
styleClass="ui-confirmdialog-yes"
styleClass="ui-confirmdialog-no"
然后将调用该动作并自动发生show()/ hide()。 Ajax在主按钮上应该是真的,你不需要type="button"
所以总而言之它会更简单:
<p:commandButton id="delete"
action="#{trafficExpenseItemsMBean.deleteExpenseItemsGroup}"
icon="ui-icon ui-icon-trash"
value="Delete"
title="GDeleteButton">
<p:confirm header="Delete Record"
message="Are you sure about deleting this record?"
icon="ui-icon-alert"/>
</p:commandButton>
<p:confirmDialog global="true" showEffect="fade" hideEffect="explode">
<p:commandButton title="GDelYesButton" value="Yes" styleClass="ui-confirmdialog-yes"/>
<p:commandButton title="GDelNoButton" value="No" styleClass="ui-confirmdialog-no" />
</p:confirmDialog>
另一种选择是使其成为非全球性的。然后你需要将操作移动到是按钮,将消息移动到p:confirmDialog,如
<p:commandButton id="delete"
icon="ui-icon ui-icon-trash"
value="Delete"
title="GDeleteButton"
onclick="PF('groupDeleteConfirm').show()">
</p:commandButton>
<p:confirmDialog message="Are you sure about deleting this record?"
showEffect="fade"
hideEffect="explode"
widgetVar="groupDeleteConfirm">
<p:commandButton title="GDelYesButton"
value="Yes"
action="#{trafficExpenseItemsMBean.deleteExpenseItemsGroup}"
oncomplete="PF('groupDeleteConfirm').hide()"
update=":growl"/>
<p:commandButton title="GDelNoButton"
value="No"
oncomplete="PF('groupDeleteConfirm').hide()"/>
</p:confirmDialog>
我不确定你真的希望按钮上有title
个,因为它们会显示给用户。
答案 1 :(得分:2)
当您使用p:commandButton
进行需要在服务器上执行的操作时,您无法使用type="button"
,因为这是用于按钮的执行自定义javascript而不会向服务器发出ajax / non-ajax请求。
为此,您可以分配类型属性(默认值为&#34;提交&#34;)或者您可以明确使用type="submit"
。
希望这会对某人有所帮助!