我有一个try/catch块,在catch中我发送消息,关于问题的一些东西然后我抛出异常(阻止之后的一切,在这种情况下,我在业务规则方法中,我想避免托管bean方法中的一切)
好吧,如果我只发送消息,它工作正常,但不会阻止调用方法(调用具有实际trycatch的方法)
我实际拥有的:
public void save() {
ProdEN prod;
if(prod.getId() == null) {
prod = prodDB.insert(prod);
} else {
prod = prodDB.update(prod);
}
if(prod== null) {
FacesUtil.addErrorMessage(MessageProvider.getMessage("error.save"));
}
FacesUtil.addInfoMessage(MessageProvider.getMessage("products.save.success"));
}
,然后是被调用的方法:
public ProdEN insert(ProdEN prod) {
try {
beginTransaction();
prod = (ProdEN) insert(prod, true);
commitTransaction();
} catch (Exception ex) {
FacesUtil.addErrorMessage(MessageProvider.getMessage("error.save"));
FacesContext.getCurrentInstance().responseComplete();
throw ex;
}
return prod;
}
尝试了一些搜索,我发现没有工作,有什么想法吗?谢谢。
应该是这样的。
修改插入方法
你不需要在这里添加错误信息。此外,您不需要返回prod对象。
public void insert(ProdEN prod) {
try {
beginTransaction();
prod = (ProdEN) insert(prod, true);
commitTransaction();
} catch (Exception ex) {
//FacesUtil.addErrorMessage(MessageProvider.getMessage("error.save"));
//FacesContext.getCurrentInstance().responseComplete();
throw ex;
}
//return prod;
}
现在是保存方法。
public void save() {
ProdEN prod;
try{
if(prod.getId() == null) {
prodDB.insert(prod);
if(prod.getId()==null){
FacesUtil.addErrorMessage(MessageProvider.getMessage("error.save"));
return
}
} else {
prod = prodDB.update(prod);
}
}catch(Exception e){
FacesUtil.addErrorMessage(MessageProvider.getMessage("error.save"));
return;
}
FacesUtil.addInfoMessage(MessageProvider.getMessage("products.save.success"));
}