抛出异常后的FacesContext消息



我有一个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"));
}

相关内容

  • 没有找到相关文章

最新更新