如何在p:commandButton ajax请求上传递变量

时间:2013-06-08 12:59:16

标签: jsf-2 primefaces

我在处理查询字符串变量时遇到问题。我有一个变量编辑,我追加到查询字符串中。默认情况下,这是真的,这意味着我的页面将处于编辑模式,如果为false,则页面将处于查看模式。所以在我读取的页面中,将编辑查询字符串变量的值赋给我的支持bean:

@Named
@RequestScoped
public class UserAction { 
    private boolean edit;
    //setter, getter
}

<ui:define name="metadata">
    <f:metadata>
        <f:viewParam name="edit" value="#{userAction.edit}" />
    </f:metadata>
</ui:define>

首次加载页面时效果很好。例如edit = true,我的页面呈现所有输入组件,但是当我点击清除按钮时:

<p:commandButton value="Reset" process="@this" update="@form" action="#{userAction.clear()}">
    <f:actionListener
        type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
    <f:param name="edit" value="true"></f:param>
</p:commandButton>

表单在没有输入组件的情况下重新渲染,因为编辑参数现在为false。

我尝试用ViewScoped替换RequestScoped,但似乎f:viewParam由于某种原因不起作用。

我也尝试了setPropertyActionListener,调用了编辑设置器但是当调用getter时,值会恢复为false。

我知道这是一个范围问题,因为我没有遇到几乎相同代码但使用ConversationScoped的相同错误。但我只需要这个支持bean作为RequestScope。

有什么想法吗?

0 个答案:

没有答案