JSF 2.0将参数传递到同一页面

时间:2012-03-09 11:35:40

标签: java jsf parameter-passing managed-bean

我有一个名为page1.jsf的页面,其中包含一个参数。我有一个包含参数的命令按钮。单击该按钮时,它必须与我传递的任何参数一起返回page1.jsf。

<h:commandButton action="#{myBean.DoSthng}" value="Something" >
 <f:param name="p1" value="sthng"></f:param>
 </h:commandButton>

我如何将此参数传递给page1.jsf本身?

在faces-config.xml - 托管Bean中,我将其设置为

<managed-bean>
  <managed-bean-name>myBean</managed-bean-name>
  <managed-bean-class>com.MyBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
  <managed-property>
    <property-name>p1</property-name>
    <value>#{myBean.p1}</value>
  </managed-property>
</managed-bean>

这给了我一个错误。

请大家帮助我。

修改

从第1页开始,我必须将操作中的值传递给辅助bean。支持bean应该将我重定向回page1,但内容不同!

3 个答案:

答案 0 :(得分:1)

虽然我不太确定您要实现的目标,但您可以使用f:setPropertyActionListener

<h:commandButton action="#{myBean.DoSthng}" value="Something" >
   <f:setPropertyActionListener target="#{myBean.p1}" value="something" />
</h:commandButton>

这将设置支持bean属性,如果从action方法返回null(或者如果它是void),则当前页面应该反映对辅助bean所做的更改。

答案 1 :(得分:0)

在您正在呼叫action的页面中,所以在返回时您可以执行以下操作

return "someView.jsf?param=val&faces-redirect=true"

答案 2 :(得分:0)

你把你的参数放在隐藏的字段中,它将可用

<input type="hidden" id="sl" name="sl" value="#{param.sl}"/>

然后你可以使用它

${param.sl}