您可以创建一个完全独立的托管 beanConfirmationBean
并将其放在请求范围内。您可以通过每个托管属性注入工具在“父”bean 中访问它,或者自己创建它并将其放入请求映射中。
如果您想将第一种方法与许多其他 bean 关联起来,第一种方法需要大量工作faces-config.xml
,所以我认为这不是很有吸引力。
第二种方式只需要在 action 方法中添加一些(可重用的)代码。我举个例子:
public String submit() {
ConfirmationBean conformationBean = new ConfirmationBean();
confirmationBean.setOutcome("outcome"); // Set navigation case outcome where it should return back.
FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("confirmationBean", confirmationBean);
return "confirm";
}
并且confirm.jsf
应该在隐藏字段中有“结果”,例如
<h:selectBooleanCheckbox value="#{confirmationBean.confirm}" />
<h:inputHidden value="#{confirmationBean.outcome}" />
<h:commandButton value="confirm" action="#{confirmationBean.submit}" />
的动作方法ConfirmationBean
应该如下所示:
public String submit() {
if (confirm) {
return outcome;
} else {
return "confirm";
}
}
或者,如果您是三元运算符的粉丝;)
public String submit() {
return confirm ? outcome : "confirm";
}