有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在jsf中将getparameter传递给支持bean?

我有一个名为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>

所以,我有两个问题:

  1. 用get参数值设置bean属性的正确方法是什么? 实际上,我已经从ExternalContext#getRequestParam中得到了值,但也许还有其他一些解决方案
  2. 更有趣的问题是:为什么propertyActionListener不在这里工作?它实际上做什么?(我也有一些想法,但如果能读到更全面的解释就好了)

共 (1) 个答案

  1. # 1 楼答案

    首先,h:commandButton触发POST请求,而不是GET请求。要启动GET请求,您需要h:outputLink。要设置GET参数,需要f:param。要将其设置为bean属性,请在faces-config.xml中将其定义为<managed-property>,值为#{param.name}。更多提示和代码示例可以在here中找到

    其次,你的代码是无效的。f:setPropertyActionListener值应该是#{param.controller}。为了让它发挥作用,#{param.controller}应该在初始请求期间就已经存在了。它不会像您预期的那样自动设置后续请求中的值。为此,你需要<h:inputHidden value="#{mailSender.controllerName}"/>