0

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

        #{pim.targetId}

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

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

4

1 回答 1

0

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

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

@ManagedProperty("#{param.id}") 
private Long targetId;
于 2012-10-21T15:02:24.760 回答