Вы можете использовать имена представлений в качестве возвращаемого значения методов действия на основе ваших условий, чтобы JSF отображал эти представления, соответствующие имени вашего возвращаемого значения.
Обработка вашего рабочего процесса может быть выполнена с помощью кода Java или объявления вашего потока в Faces-config.xml
для java пример: (Динамическая навигация)
public String yourActionMethod(){
if(condition1){
return "view1";
}else if(condition2){
return "view2";
}else if(conditionN){
return "viewN";
}
}
для примера XML: (статическая навигация)
<navigation-rule>
<from-view-id>/index.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/welcome.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/failed.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
Для вашего варианта использования динамическая навигация (с использованием кода Java) хороша.
Если вы хотите отображать диалоги на основе условий на стороне сервера, вы можете использовать sth следующим образом:
public void doSomething(ActionEvent actionEvent) {
RequestContext context = RequestContext.getCurrentInstance();
context.execute("dialogVar.show()");
}
если ваш вариант использования более сложен и у вас сложный рабочий процесс, попробуйте использовать Activiti и получить выходные данные от него в качестве ваших ViewId и вернуть их в методе действия, чтобы JSF отобразил их.
Вы также можете написать свой собственный конечный автомат и получить его выходные данные и вернуть его в свой метод действия как свой ViewId.
person
Mehdi
schedule
09.08.2012