Скрытие поля сообщений xp: когда пусто - PullRequest
0 голосов
/ 04 июня 2018

В моем приложении Xpages я использую Bootstrap для создания тем.У меня есть окно xp: messages, к которому я применил некоторый Bootstrap CSS.

Когда нет сообщений, я хочу скрыть панель с сообщениями.Поэтому я придумал следующее:

<xp:panel rendered="#{javascript:facesContext.getMessages().hasNext()}"                 styleClass="alert alert-info">
<xp:text escape="true" value="#{javascript:facesContext.getMessages().hasNext()}">
</xp:text>
<xp:messages globalOnly="true" layout="list"></xp:messages>
</xp:panel>

Однако иногда я замечаю, что элемент управления xp: messages пуст, ноfaceContext.getMessages (). HasNext () возвращает true.

Есть ли другойспособ проверить значение xp: messages?Я попытался getComponent (...). GetValue (), но приложение не работает.

Вот что возвращается в браузер:

<div class="alert alert-info">
<span>true</span><span role="alert"></span></div>

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

Я пишу на основе вашего примера кода, то есть вы хотите иметь дело только с глобальными сообщениями.Важно, чтобы вы передали значение null в getMessages method.Таким образом, вы будете фильтровать только глобальные сообщения или, другими словами, сообщения, которые не привязаны к определенному компоненту.

Все сообщения: facesContext.getMessages()

Только глобальные сообщения:facesContext.getMessages(null)

Сообщения для определенного компонента: facesContext.getMessages('whateverIdYouHave')

0 голосов
/ 06 июня 2018

Вы пытались напрямую применить класс начальной загрузки к элементу управления xp: messages?например,

<xp:messages id="messages1" infoClass="alert alert-info"></xp:messages>

, при этом вам не нужна окружающая панель и вычисляется визуализированное свойство

0 голосов
/ 05 июня 2018

Вы хотите обернуть этот вызов в функцию, которую вы храните в библиотеке SSJS, и использовать что-то вроде rendered=JavaScript:hasMessages() Это облегчает понимание кода позже.

Внутри функции вы сможетепереберите сообщения и проверьте, являются ли они пустыми (или, в конце концов, сообщения, которые вас не волнуют).

В спецификации JSF есть getMessageList(), которая возвращает коллекцию, которую можно проверить с помощью isEmpty().Не уверен, что это было реализовано в XPages.Пол, как обычно, имеет больше информации здесь:

http://www.intec.co.uk/how-many-xpages-errors-have-i-got/

Счетчик кажется наиболее надежным

...