【问题标题】:How to submit a form in RichFaces?如何在 RichFaces 中提交表单?
【发布时间】:2010-11-05 17:55:56
【问题描述】:

我知道这听起来可能是一个基本问题,但我很难弄清楚这一点。 首先我有这个表格:

<h:form>
   <h:inputText value="#{movies.name}"/>
   <a4j:commandButton id="mybutton" value="Modify" immediate="true" action="#{movies.testModify}"/>
</h:form>

我想从电影 bean 的 testModify() 方法中捕获输入文本中的值。 我的问题是 testModify 根本没有被调用。我注意到的奇怪行为是,当我删除 h:form 标记时,会调用该方法,但我仍然不知道如何从输入文本中获取值。

根据我的阅读,a4j:commandButton 需要 h:form 才能正常工作。

任何帮助将不胜感激!

【问题讨论】:

  • 我发现了问题所在:我不小心将 h:form 包裹在另一个 h:form 中。删除父 h:form 后,对该方法的调用运行良好,此外,name 属性就位。所以,总而言之,a4j:commandButton 做得很好。

标签: forms richfaces ajax4jsf


【解决方案1】:

使用h:commandButton 而不是a4j:commandButton。第一个是提交表单的标准 JSF 按钮,后者执行 ajax 请求。

【讨论】:

    【解决方案2】:

    首先,如 Markos Fragkakis 所述,使用基本的 &lt;h:commandButton&gt; 而不是 ajaxified &lt;a4j:commandButton&gt;,因为在您的情况下,您没有兴趣在这里使用 Ajax 操作。

    其次,删除此按钮上的immediate="true" 属性。使用此属性means that,默认的 ActionListener 应立即执行(即在请求处理生命周期的Apply Request Values 阶段),而不是等到Invoke Application 阶段。

    如果您对 Java bean 的操作仍未被调用,则可能是在 Invoke Application JSF lifecycle phase 之前发生了错误。添加&lt;h:messages&gt; 将显示可能的问题:

    <h:form>
       <h:messages/>
       <h:inputText value="#{movies.name}"/>
       <h:commandButton id="mybutton" value="Modify" action="#{movies.testModify}"/>
    </h:form>
    

    【讨论】:

      猜你喜欢
      • 2014-10-31
      • 2017-09-22
      • 2016-09-26
      • 2014-09-10
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多