Вы можете создать полностью независимый управляемый компонент ConfirmationBean
и поместить его в область запроса. Вы можете получить к нему доступ в «родительском» bean-компоненте с помощью каждого средства управляемого ввода свойств или просто создать его самостоятельно и поместить в карту запроса.
Первый способ требует много работы в faces-config.xml
, если вы хотите связать его с множеством других компонентов, поэтому я не думаю, что это очень привлекательно.
Второй способ требует только немного (многоразового) кода в методе действия. Я приведу пример:
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";
}