В старом jsf работал следующий код
<navigation-rule>
<from-view-id>/page1.xhtml</from-view-id>
<navigation-case>
<from-outcome>true</from-outcome>
<to-view-id>/page2.xhtml</to-view-id>
<redirect>
<view-param>
<name>id</name>
<value>#{myBean.id}</value>
</view-param>
</redirect>
</navigation-case>
</navigation-rule>
код page1.xhtml:
<f:metadata>
<f:viewParam id="id" name="id" value="#{myBean.id}" />
<f:viewAction action="#{myBean.init()}"/>
</f:metadata>
Java-код:
public class MyBean(){
private double id;
public boolean init(){
if(id > 0)
return true;
else
return false;
}
}
В сценарии успеха, когда page1.xhtml?id=0
страница1 будет открыта при page1.xhtml?id=1
переходе на page2
с параметром id=1
.
переход к page2.xhtml?id=1
с параметром нужен, т.к. в page2
по PostConstruct
или <f:viewAction>
параметр читается и нужен для поиска объекта по этому id
Использование jsf 2.2 с реализацией mojarra javax.faces-2.2.8 в файлеfaces-config.xmlнет <view-param>
есть <redirect-param>
их изменение не дает сценария успеха, когда навигация без идентификатора, где он будет переходить к page2.xhtml
вместо page2.xhtml?id=1