gpt4 book ai didi

java - 抛出异常后的 FacesContext 消息

转载 作者:行者123 更新时间:2023-12-01 12:58:19 25 4
gpt4 key购买 nike

我有一个 try/catch block ,在 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 对象。 Java改变它的value值。

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"));
}

关于java - 抛出异常后的 FacesContext 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23717827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com