在我的 JSF 应用程序中,我有两个页面,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>
这是豆方法:
@ManagedBean
@ViewScoped
public class ListBean {
public String goToDetails() {
// some code
return "details?faces-redirect=true";
}
}
我像这样读取第二个 bean 中的参数:
Map<String, String> params = FacesContext.getCurrentInstance()
.getExternalContext().getRequestParameterMap();
this.setIdParam(params.get("id"));
当我运行此代码时,参数不会传递给第二个 bean 实例。但是,当我将导航更改为forward
(不带faces-redirect=true
)时,传递了参数,我可以看到详细信息,details.jsf
但 URL 与当前页面不匹配。
所以我想做的是使用带有POST参数(f:param)的“jsf隐式重定向”(不是转发)。