shr*_*nth 1 validation dialog messages primefaces jsf-2
我在手风琴面板的标签内有一个文字区域,这是一个描述.我正在尝试编辑说明并保存它.我正在验证文本区域,以便最大字符不应超过1000个字符.我<p:message>用来显示验证消息.在实际保存之前,将显示确认对话框以确认保存.
<p:messages showDetail="true" autoUpdate="true" />
<p:accordionPanel dynamic="true">
<p:tab id="_0" title="description">
<p:inputTextarea styleClass="max" id="editDesc1" widgetVar="txtBox" value="#{testBean.description}"
rows="6" cols="150" validatorMessage="#{msg.AddSystem_validationMsg5}" autoResize="false">
<f:validateLength maximum="1000"></f:validateLength>
</p:inputTextarea>
<p:commandButton value="save" oncomplete="saveDialog.show()"/>
<p:confirmDialog message="#{msg.EditSystem_confirmMsg1}" width="200"
showEffect="explode" hideEffect="explode"
header="Confirm" severity="alert" widgetVar="saveDialog">
<p:commandButton value="#{msg.EditSystem_confirmAnswer1}" action="#{testBean.saveEdit}" process="@this" />
<p:commandButton value="#{msg.EditSystem_confirmAnswer2}" onclick="saveDialog.hide()" type="button" />
Run Code Online (Sandbox Code Playgroud)
如果用户输入超过1000个字符并尝试保存,则验证消息会短时间出现,然后弹出确认对话框,导致验证消息消失.如果出现验证错误,如何防止确认对话框弹出?
oncomplete如果验证没有失败,您需要签入保存按钮.PrimeFaces将一个全局args对象放在JavaScript范围内,而JavaScript范围又具有布尔validationFailed属性.你可以利用它:
<p:commandButton value="save" oncomplete="if (args && !args.validationFailed) saveDialog.show()"/>
Run Code Online (Sandbox Code Playgroud)
这样,只有在验证未失败时才会显示确认对话框.