W mojej aplikacji Xpages używam Bootstrap do tematów. Mam pudełko XP: Wiadomości, które zastosowałem niektóre bootstrap CSS do.

Wtedy, gdy nie ma żadnych wiadomości, które chcę ukryć panel zawierający wiadomości. Więc wymyśliłem następujące:

<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>

Nie zauważam jednak czasami XP: Control Control jest pusty, ale facecontext.getMessages (). Hasnext () zwraca true.

Czy istnieje inny sposób sprawdzenia wartości XP: Wiadomości? Próbowałem GetComponent (...). GetValue (), ale niż załogi aplikacji.

To jest powrócone do przeglądarki:

<div class="alert alert-info">
<span>true</span><span role="alert"></span></div>
0
Malin 4 czerwiec 2018, 23:21

3 odpowiedzi

Najlepsza odpowiedź

Czy próbowałeś bezpośrednio zastosować klasę Bootstrap do XP: Control Control? na przykład

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

Niniejszym nie potrzebujesz otaczającego panelu i obliczyć renderowaną nieruchomość

2
Patrick Kwinten 6 czerwiec 2018, 08:58

Piszę na podstawie twojego przykładowego kodu, to znaczy, chcesz mieć tylko wiadomości globalne. Ważne jest, aby przekazał wartość null do getmessages method. W ten sposób będziesz filtrowany tylko na wiadomości globalne lub, innymi słowy, wiadomości, które nie są związane z określonym składnikiem.

Wszystkie wiadomości: facesContext.getMessages()

Tylko wiadomości globalne: facesContext.getMessages(null)

Wiadomości dla określonego składnika: facesContext.getMessages('whateverIdYouHave')

3
shillem 5 czerwiec 2018, 07:43

Chcesz owinąć, które wezwanie do funkcji, które trzymasz w bibliotece SSJS i użyj czegoś takiego jak rendered=JavaScript:hasMessages(), co sprawia, że jest łatwiejsze do zrozumienia kodu później.

Wewnątrz funkcji powinieneś być w stanie iterować przez wiadomości i sprawdzić, czy są puste (lub ostatecznie: wiadomości, których nie dbasz o to).

Specyfikacja JSF ma getMessageList(), który zwraca kolekcję, którą możesz sprawdzić za pomocą isEmpty(). Nie jestem pewien, czy został wdrożony w Xpages. Paul, jak zwykle ma więcej informacji tutaj:

http://www.intec.co.uk/how-many-xpages-Erors-have----6-6-

Counter wydaje się najbardziej wiarygodny

1
stwissel 4 czerwiec 2018, 22:33