如何将url参数传递给JSF?

12

我还没有找到通过URL参数将参数传递给JSF页面的方法。

http://www.example.com/jsfApp.jsp?param1=value1&param2=value2

有人能指导我正确的方向吗?

1个回答

25

由于您在使用JSP,所以我会假设您正在使用JSF 1.x。

要使用查询参数创建链接,请使用h:outputLinkf: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 来获取设置两个属性 param1param2

如果您想在它们被设置后直接执行一些逻辑,请使用@PostConstruct注释:

@PostConstruct
public void init() {
    doSomethingWith(param1, param2);
}

如果你需要关于在JSF中传递参数等方面的提示,你可以查看这篇文章

在JSF 2.x中,你可以使用后端bean类中的@ManagedProperty或目标视图中的<f:viewParam>。也可以参考这个问题:ViewParam vs @ManagedProperty(value = "#{param.id}")


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接