Предотвратить открытие диалога подтверждения при ошибке проверки
У меня есть текстовая область внутри вкладки панели аккордеона, которая является описанием. Я пытаюсь редактировать описание и сохраняю его. Я проверяю текстовую область, чтобы максимальный символ не превышал 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" />
Если пользователь вводит более 1000 символов и пытается сохранить его, на короткое время появляется сообщение проверки, а затем появляется диалоговое окно подтверждения, в результате чего сообщение проверки исчезает. Как предотвратить появление диалогового окна подтверждения при ошибке проверки?
2 ответа
Вам необходимо зарегистрироваться oncomplete
кнопки сохранения, если проверка не удалась. PrimeFaces ставит глобальный args
объект в области JavaScript, который в свою очередь имеет логическое значение validationFailed
имущество. Вы можете использовать это:
<p:commandButton value="save" oncomplete="if (args && !args.validationFailed) saveDialog.show()"/>
Таким образом, диалоговое окно подтверждения будет отображаться только в том случае, если проверка не удалась.
Я думаю, что вы можете использовать JavaScript для проверки:
<script type="text/javascript">
function test(){
// validation here
if(isValidated){saveDialog.show()}
else alert('exceed ...');
}
</script>
<p:commandButton value="save" onclick="test()"/>