【问题标题】:How to pass get-parameter to backing bean in jsf?如何将get-parameter传递给jsf中的backing bean?
【发布时间】:2011-02-02 02:58:57
【问题描述】:

我有一个名为 controller 的获取参数。当我尝试将它(使用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 在这里不起作用?它实际上是做什么的? (再次,我对此有一些想法,但最好阅读更全面的解释)。

【问题讨论】:

    标签: java jsf parameter-passing


    【解决方案1】:

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

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

    【讨论】:

    • @BalusC:从您的回答中,我了解到我提出了非常不清楚的问题,这就是为什么您决定立即回答所有可能的“真实”含义。无论如何,谢谢,它像往常一样有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2014-02-09
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多