Как показать всплывающее окно в файлах с требуемыми сообщениями, только если эти сообщения существуют?
Я хочу показать всплывающее окно с необходимыми сообщениями некоторых полей inputText, когда я нажимаю кнопку отправки. Но только в случае появления этих сообщений. Я попытался с переменной bean и javascript в теге oncomplete, но я не могу заставить его работать правильно. Если я поставлю visible = "true" в диалоговом окне p: всплывающее окно всегда отображается, хотя я пытаюсь управлять им из commandButton. Теперь у меня есть это, но всплывающее окно никогда не отображается:
<h:inputText id="Scheme"
required="true"
requiredMessage="Required.">
</h:inputText>
<h:commandButton id="submitModify" value="#{msg['systemdetail.modify']}"
action="#{sistem.modify}"
oncomplete="if (#{facesContext.maximumSeverity != null}) {dlg1.show();}">
</h:commandButton>
<p:dialog id="popup"
style="text-align:center"
widgetVar="dlg1"
modal="true">
<h:messages layout="table"/>
</p:dialog>
Как я могу это сделать? Спасибо заранее.
Ответы
Ответ 1
Стандартные JSF и PrimeFaces не поддерживают оценку EL на основе запроса в атрибутах on*
. Только RichFaces поддерживает это. Кроме того, стандартный JSF <h:commandButton>
не имеет атрибута oncomplete
. Вероятно, вы сбиваете с толку PrimeFaces <p:commandButton>
Существует несколько способов добиться этого:
-
Проверьте условие в атрибуте visible
<p:dialog>
.
<p:dialog visible="#{not empty facesContext.messageList}">
или если вы хотите показывать только сообщения проверки, а не все сообщения
<p:dialog visible="#{facesContext.validationFailed}">
-
Вместо этого используйте PrimeFaces <p:commandButton>
, API-интерфейс PrimeFaces поддерживает условие #{facesContext.validationFailed}
через объект args
:
<p:commandButton ... oncomplete="if (args.validationFailed) dlg1.show()" />
Ответ 2
Если вам нужно проверить, для каких сообщений, это способ, которым я работал с файлами. Так как после завершения обновления, после обновления компонента, содержащего функцию javascript, вызываются после того, как будут выполнены неполные объекты, функция javascript может быть перестроена с использованием последних значений # facesContext.maximumSeverity} перед выполнением.
<p:commandButton
oncomplete="executeAfterUpdate()"
update="updatedBeforeOnComplete"/>
<h:panelGroup id="updatedBeforeOnComplete">
<script language="JavaScript" type="text/javascript">
//
function executeAfterUpdate(){
if (#{facesContext.maximumSeverity==null
or facesContext.maximumSeverity.ordinal=='1'})
{
// your code to execute here
someDialog.show();
}
}
//
</script>
</h:panelGroup>