我有一个名为controller
的get参数。当我尝试将它(使用propertyChangeListener
)传递给我的支持bean时,我得到null
而不是该参数的实际值:
<h:commandButton value="#{msg['mail.send']}" styleClass="mailbutton" action="#{mailSender.sendMail}">
<f:setPropertyActionListener target="#{mailSender.controllerName}" value="{#param.controller}"/>
</h:commandButton>
所以,我有两个问题:
ExternalContext#getRequestParam
获得了价值,但也许还有其他一些解决方案。答案 0 :(得分:3)
首先,h:commandButton
会触发POST
个请求,而不是GET
个请求。要触发GET
请求,您需要h:outputLink
。要设置GET
参数,您需要f:param
。要将其设置为bean属性,请在<managed-property>
中将其定义为faces-config.xml
,其值为#{param.name}
。可以找到更多提示和代码示例here。
其次,您的代码无效。 f:setPropertyActionListener
值应为#{param.controller}
。为了让它发挥作用,#{param.controller}
在初始请求期间已经存在。它不会像您期望的那样自动设置后续请求中的值。为此,您需要<h:inputHidden value="#{mailSender.controllerName}"/>
。