当按下commandButton时,我需要通过请求范围的托管bean #{pim}
(当页面最初加载时)在页面上检索的值设置为#{requestScope}
。
但是当按下命令按钮时,它会使用新实例化的#{pim}
bean的值,该值为空。
#{pim.targetId}
<p:commandButton value="View">
<f:setPropertyActionListener value="#{pim.targetId}" target="#{requestScope.id}" />
</p:commandButton>
但这不起作用,因为#{pim}
bean包含的值在请求后被销毁。我希望它能够工作,希望它能分配在加载页面时检索到的值,但它不会那样工作。
答案 0 :(得分:0)
使用<f:param>
代替<f:setPropertyActionListener>
。前者在呈现命令按钮期间直接在生成的ajax脚本中设置请求参数,而后者在处理表单提交期间完全在服务器端设置属性(因此这已经丢失,因为这涉及一个全新的请求,它是一个请求范围属性)。
<f:param name="id" value="#{pim.targetId}" />
与
@ManagedProperty("#{param.id}")
private Long targetId;