私のJSFアプリケーションには、2つのページとがlist.jsf
ありdetails.jsf
、各ページにはビュースコープを持つ独自のコントローラーがあります。list.jsf
アクションを呼び出して<h:commandLink>
パラメータを渡すがあります。
<h:commandLink value="details" action="#{listBean.goToDetails}" >
<f:param name="id" value="#{listBean.object.pk}"/></h:commandLink>
これはBeanの方法です。
@ManagedBean
@ViewScoped
public class ListBean {
public String goToDetails() {
// some code
return "details?faces-redirect=true";
}
}
2番目のBeanのパラメーターを次のように読み取ります。
Map<String, String> params = FacesContext.getCurrentInstance()
.getExternalContext().getRequestParameterMap();
this.setIdParam(params.get("id"));
このコードを実行すると、パラメーターが2番目のBeanインスタンスに渡されません。ただし、ナビゲーションをforward
(なしfaces-redirect=true
)に変更すると、パラメーターが渡され、詳細を確認できますdetails.jsf
が、URLが現在のページと一致しません。
したがって、私がやりたいのは、POSTパラメーター(f:param)で「jsf暗黙的リダイレクト」(転送ではない)を使用することです。