如何将url参数传递给JSF?

Ben*_*Ben 10 jsf

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

http://www.example.com/jsfApp.jsp?param1=value1&param2=value2
Run Code Online (Sandbox Code Playgroud)

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

Bal*_*usC 24

在使用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>
Run Code Online (Sandbox Code Playgroud)

value可动态地EL的帮助下进行设置.

要设置他们在托管bean自动的,你需要在每个定义为managed-propertyfaces-config.xml:

<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>
Run Code Online (Sandbox Code Playgroud)

#{param}如您从Servlet API中所知,非隐式EL变量引用请求参数映射.bean当然应该具有定义适当的getter/setter的属性param1param2属性.

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

@PostConstruct
public void init() {
    doSomethingWith(param1, param2);
}
Run Code Online (Sandbox Code Playgroud)

有关在JSF中传递参数和类型的更多提示,您可能会发现本文很有用.

JSF 2.x方法将@ManagedProperty在支持bean类或<f:viewParam>目标视图中使用.另请参阅此问题:ViewParam与@ManagedProperty(value ="#{param.id}")