【发布时间】:2014-01-02 09:40:43
【问题描述】:
假设我的 JSF 2 应用程序中有两个页面:第一个页面显示一个对象表(汽车或其他),另一个页面能够显示一个特定对象的详细信息。 表格页面在请求范围内,因为每次用户请求时都应重新加载对象。详细信息页面在查看范围内。 所以当我点击表格内的一个对象时,这个对象应该会显示在详细信息页面中。通过重定向,我可以转到详细信息页面,但详细信息页面为空,因为生成了新的 vew。 好的,我可以将范围更改为会话,但这会导致其他问题,因此我希望在查看范围内查看详细信息页面。有没有办法将参数传递给新生成的视图范围 bean?
更新 1
这里是第一次尝试使用视图参数的代码sn-p。正如评论的那样,这不起作用。该值作为请求参数传递,但在目标页面中该值为 null。
表格页:
<h:button value="Go to details" outcome="targetPage">
<f:param name="carId" value="This is a test" />
</h:button>
详情页:
<f:metadata>
<f:viewParam name="carId" value="#{bean.id}" />
<f:event type="preRenderView" listener="#{bean.loadData}"/>
</f:metadata>
详细信息页面的Bean:
private String id;
public String getId() {
return id;
}
public void setId( String id ) {
this.id = id;
}
public void loadData() {
System.out.println( "Id: " + id );
}
更新 2
我发现了我的错误。元数据部分位于模板文件中。当我将标签放在详细信息页面的主文件中时,它可以工作。非常感谢。
【问题讨论】:
-
访问 [此链接][1] 在这里你可以找到完整的解释。 [1]:stackoverflow.com/questions/4888942/…
标签: jsf view parameters scope