Bom dia Srs,
Frequento o forum a um tempo ... mas normalmente não há necessidade de postar , pois ja acho nos tópicos já criados ..
mas esse problema estou a um tempo procurnado e não consigo achar algo aplicável :x
pois bem, estou querendo capturar uma exception lançada no set da minha entidade e exibi-la de forma amigável para o usuário ... ja faço uma validação na tela ... mas estou tentando entender como fazer isso no .java ,
se eu fizer isso :
no xhtml :<p:messages id="message" />
//mais código
<h:outputLabel value="#{msgs['pages.aeroporto.cadastro.cidade']} :"
for="cidade" />
<p:inputText id="cidade" value="#{aeroportoBean.aeroporto.cidade}"
required="true"
requiredMessage="#{msgs['exception.negocio.cidade.obrigatorio']}" />
// outros campos
<p:commandButton update="tabela,message"
oncomplete="dialogAeroporto.hide();"
actionListener="#{aeroportoBean.insert}"
value="#{msgs['botao.cadastrar']}"
rendered="#{aeroportoBean.aeroporto.id == 0}" />
public void setCidade(String cidade) throws NegocioException {
cidade.trim();
if (cidade == null || cidade.isEmpty())
throw new NegocioException(
ResBundle.MESSAGE
.getString("exception.negocio.cidade.obrigatorio"));
if (cidade.length() > 20)
throw new NegocioException(
ResBundle.MESSAGE
.getString("exception.negocio.cidade.caractere"));
this.cidade = cidade;
}
public void insert(ActionEvent actionEvent) throws NegocioException {
try {
service.Insert(aeroporto);
Mensagem.adicionarMensagemSucesso("Cadastrado com sucesso!");
} catch (Exception e) {
Mensagem.adicionarMensagemErro(e.getMessage());
}
}
dessa forma se tudo der certo , ele insere normal no banco ... mas caso dê alguma exceção lá na entidade ... por ex o campo tiver + de 20 caracteres , ele nao insere realmente .. mas eu não consigo capturar essa mensagem lançada lá!
caso eu faça assim no bean :
public void insert(ActionEvent actionEvent) throws NegocioException {
try {
if (aeroporto.getCidade().length() > 5) //só pra testar!
throw new NegocioException(
ResBundle.MESSAGE.getString("exception.negocio.cidade.caractere"));
service.Insert(aeroporto);
Mensagem.adicionarMensagemSucesso("Cadastrado com sucesso!");
} catch (Exception e) {
Mensagem.adicionarMensagemErro(e.getMessage());
}
}
eu consigo mandar pra tela essa mensagem.
a duvida é... eu preciso fazer essas validações no bean? ou tem algum jeito de capturar essa exception lançada lá na entidade?
Se alguem puder ajudar , agradeço desde já!

