【发布时间】:2012-12-12 19:08:38
【问题描述】:
在我的 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>
这是bean方法:
@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 隐式重定向”(不是转发)。
【问题讨论】:
-
很好奇; goToDetails 中的“一些代码”由什么组成?从方法的名称和您描述的用例来看,很难想象它可能会做什么。如果它确实在做一些有用的事情,eljunior 的答案是最好的(但用简单的结果替换语句),否则 arjan tijms 的答案更好。
标签: jsf post parameters