如何将url参数传递给JSF?
问题描述:
我还没有设法找到一种方法通过URL参数将参数传递给JSF页面。如何将url参数传递给JSF?
http://www.example.com/jsfApp.jsp?param1=value1¶m2=value2
有人能指出我在正确的方向吗?
答
当您使用JSP时,我假设您使用的是JSF 1.x.
要通过查询参数的链接,使用h:outputLink
与f:param
:
<h:outputLink value="page.jsf">
<f:param name="param1" value="value1" />
<f:param name="param2" value="value2" />
</h:outputLink>
的value
可以用EL的帮助下动态地设置。
,自动将它们设置在托管bean,你需要在faces-config.xml
定义每个为managed-property
:
<managed-bean>
<managed-bean-name>bean</managed-bean-name>
<managed-bean-class>com.example.Bean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>param1</property-name>
<value>#{param.param1}</value>
</managed-property>
<managed-property>
<property-name>param2</property-name>
<value>#{param.param2}</value>
</managed-property>
</managed-bean>
的imlicit EL变量#{param}
指请求参数地图,你从Servlet API的知道这一点。该bean当然已经具有param1
和param2
属性以及定义的适当的获取器/设置器。
如果你想执行它们被设置后直接一些逻辑,利用@PostConstruct
注释:
@PostConstruct
public void init() {
doSomethingWith(param1, param2);
}
有关将参数更多的提示和诸如此类的东西在左右JSF,你可能会发现有用。
JSF 2.x方法将使用支持bean类中的@ManagedProperty
或目标视图中的<f:viewParam>
。另请参阅此问题:ViewParam vs @ManagedProperty(value = "#{param.id}")
太棒了!谢谢!! – Ben 2010-03-16 18:10:43
不客气。 – BalusC 2010-03-16 18:12:07