我还没有找到通过URL参数将参数传递给JSF页面的方法。
http://www.example.com/jsfApp.jsp?param1=value1¶m2=value2
有人能指导我正确的方向吗?
我还没有找到通过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>
通过EL表达式可以动态设置value
的值。
要自动将它们设置到托管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>
隐式 EL 变量 #{param}
引用了请求参数映射,就像你从 Servlet API 中知道的那样。当然,bean 应该已经定义了正确的 getters/setters 来获取设置两个属性 param1
和 param2
。
如果您想在它们被设置后直接执行一些逻辑,请使用@PostConstruct
注释:
@PostConstruct
public void init() {
doSomethingWith(param1, param2);
}
如果你需要关于在JSF中传递参数等方面的提示,你可以查看这篇文章。
在JSF 2.x中,你可以使用后端bean类中的@ManagedProperty
或目标视图中的<f:viewParam>
。也可以参考这个问题:ViewParam vs @ManagedProperty(value = "#{param.id}")