将使用page获取的值传递给commandButton上的托管bean按

时间:2012-10-21 14:20:41

标签: jsf

当按下commandButton时,我需要通过请求范围的托管bean #{pim}(当页面最初加载时)在页面上检索的值设置为#{requestScope}。 但是当按下命令按钮时,它会使用新实例化的#{pim} bean的值,该值为空。

        #{pim.targetId}

        <p:commandButton value="View">    
            <f:setPropertyActionListener value="#{pim.targetId}" target="#{requestScope.id}" />  
        </p:commandButton>

但这不起作用,因为#{pim} bean包含的值在请求后被销毁。我希望它能够工作,希望它能分配在加载页面时检索到的值,但它不会那样工作。

1 个答案:

答案 0 :(得分:0)

使用<f:param>代替<f:setPropertyActionListener>。前者在呈现命令按钮期间直接在生成的ajax脚本中设置请求参数,而后者在处理表单提交期间完全在服务器端设置属性(因此这已经丢失,因为这涉及一个全新的请求,它是一个请求范围属性)。

<f:param name="id" value="#{pim.targetId}" />  

@ManagedProperty("#{param.id}") 
private Long targetId;