Pessoal, estou com um problema que é o seguinte, eu tenho um método no Managed Bean que vai retornar a lista para montar um combo. Se der erro nesse método eu adiciono uma mensagem, so que ela não aparece na tela.
Eu imagino que seja porque o método é executado na fase de renderização.
É isso mesmo? Existe alguma alterantiva?
parace um problema semelhante a esse, que não teve resposta:
http://www.guj.com.br/posts/list/100167.java
Valeu.
thgdias
Novembro 18, 2008, 10:39am
#2
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage fm = new FacesMessage(severity, msg, detail);
context.addMessage(id, fm);
EDIT: No Jedi tem uma explicação bem legal disso ai no curso de JSF!
http://www.dfjug.org/DFJUG/jedi/index.jsp
Sim eu adiciono a mensagem dessa forma que você mostrou. Porém nesse caso específico com combo ela não aparece.
thgdias
Novembro 18, 2008, 1:03pm
#4
mas não é pra usar com combo que isso serve.
Beleza, é exatamente isso que eu quero saber, como enviar uma mensagem nesse caso (não só combo).
o meu código é mais ou menos assim:
[code]<h:messages id=“message” globalOnly=“true” layout=“table” showDetail=“true” />
<h:selectOneMenu id=“combo” value="#{bean.codigoCombo}" required=“true”>
<f:selectItems value="#{bean.montaCombo}"/>
</h:selectOneMenu>[/code]
[code]public List getMontaCombo() {
//codigo para montar o combo...
//se deu erro
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Erro ao montar combo."));
}[/code]
Abraços.
Então pessoal, alguém teria uma dica para em dar?
Parece um problema comum, então alguém já deve ter passado por isso.
Obrigado.
rponte
Dezembro 2, 2008, 12:08am
#7
O problema é que seu método é chamado na fase de RENDER_RESPONSE, e as mensagens de erros já foram renderizadas antes da chamada do método pois o componente h:messages foi inserido antes.
Dá uma olhada aqui,
http://www.martinahrer.at/blog/2008/03/05/keep-rich-faces-modal-panel-open-when-form-validation-errors-occur/
Abraços e boa sorte.