我在对话框中有一个 inputTextArea,并希望当用户单击取消按钮时不应发送/更改 bean 属性,但确实如此。
<p:dialog header="Notizen" id="paketNotizenDialog" modal="true"
widgetVar="paketNotizenDialogWV">
<h:form>
<p:panelGrid columns="1">
<p:inputTextarea scrollHeight="200" rows="6" cols="33" autoResize="false"
value="#{paketErstellenDialogController.selectedPaket.notiz}" />
</p:panelGrid>
<p:commandButton value="Save" process="@form" oncomplete="PF('paketNotizenDialogWV').hide();"/>
<p:commandButton value="Cancel" oncomplete="PF('paketNotizenDialogWV').hide();" process="@none" update="@none" />
</h:form>
</p:dialog>
打开对话框的按钮:
<p:commandButton id="notizEintragButton" value="T" process="@this"
onclick="PF('paketNotizenDialogWV').show();" />
有什么提示吗?提前致谢。
最佳答案
当您使用commandButton
时,默认行为是使用ajax请求提交封闭表单。
我怀疑您在这里想要做的是重置表单输入并关闭对话框。在这种情况下,您应该选择 type="reset"
,根据 primefaces 文档:
Reset buttons do not submit the form, just resets the form contents.
完成后,触发关闭 JavaScript 代码:
<p:commandButton value="Cancel" type="reset"
onclick="PF('paketNotizenDialogWV').hide();"/>
如果您不想重置表单,只需关闭对话框然后使用:
<p:commandButton value="Cancel" type="button"
onclick="PF('paketNotizenDialogWV').hide();"/>
根据 primefaces 文档,这将:
Push buttons are used to execute custom javascript without causing an ajax/non-ajax request. To create a push button set type as "button"
更新
如果您想重置支持 bean 的值,请使用 reset input fields primefaces 的功能。
在你的情况下,它会是这样的:
<p:panelGrid columns="1">
<p:inputTextarea id="input" scrollHeight="200" rows="6" cols="33" autoResize="false"
value="#{paketErstellenDialogController.selectedPaket.notiz}" />
</p:panelGrid>
<p:commandButton value="Cancel" oncomplete="PF('paketNotizenDialogWV').hide();"
process="@this" update="input" >
<p:resetInput target="input" />
</p:commandButton>
关于jsf - 对话框中的 InputTextarea 不应处理,但它确实处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42577503/