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 :
[code]
<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}” />[/code]
na entidade :
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;
}
no bean :
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 :
[code]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());
}
}[/code]
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á!

