page1.xhtml
<h:body>
<h:link outcome="page2.xhtml>
<f:param name="id" value="1"/>
</hlink>
</h:body>
page2.xhtml
<h:body>
<f:metadata>
<f:event type="preRenderView" listener="#{myBean.init}"/>
</f:metadata>
<ui:include src="#{myBean.myString}"/>
</h:body>
MyBean.java
public void init(ComponentsystemEvent e){
Map<String,String> params =
FacesContext.getExternalContext().getRequestParameterMap();
String myId = params.get("id");
int id = Integer.parseInteger(myId);
if(id==1)
setMyString = "myPage.xhtml";
}
page1.xhtml から page2.xhtml に移動しているときに、この ID に従ってページを表示するパラメーターとして ID を送信しています。
問題は、ページが見つからないことです
preRenderView init に行く前に getMyString() を評価していることがわかりました。
また、マネージドBeanのリソースインジェクションでエラーを返したポストコンストラクトを試しました