Estou com um pequeno problema. Em uma mesma página jsf quero ter tanto mensagens específicas quanto globais.
Para que as mensagens para componentes específicos não se repitam no elemento <h:messages /> usei o atributo globalOnly=true. Mas quando eu uso o globalOnly=“true” nenhuma mensagem global aparece, se eu uso globalOnly=“false” todas as mensagens (globais e específicas para os componentes) aparecem.
Abaixo segue a página:
<f:view>
<h:form>
<h:messages globalOnly="true" />
<br>
UserID: <h:inputText id="login" value="#{loginController.login}" required="true" />
<font color="#FF0000">
<h:message for="login"/>
</font>
<br/>
Password: <h:inputSecret id="password" value="#{loginController.password}" required="true" />
<font color="#FF0000">
<h:message for="password"/>
</font>
<br/>
<br/>
<h:commandButton value="Login" action="#{loginController.doLogin}"/>
</h:form>
O código que adiciona a mensagem global:
FacesContext ctx = FacesContext.getCurrentInstance();
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR ,"Login/Senha inválidos.","Login/Senha inválidos.");
ctx.addMessage("loginInvalido", message);
Mas ao invés dessa mensagem aparecer na tag <h:messages /> eu recebo um erro no log do tomcat:
08/08/2007 21:22:15 com.sun.faces.lifecycle.RenderResponsePhase execute
INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=loginInvalido[severity=(ERROR 2), summary=(Login/Senha inválidos.), detail=(Login/Senha inválidos.)]
Estou totalmente perdido… alguêm pode me ajudar a esclarecer o que está acontecendo?
grato,
Filipe.