0

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

<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 才能正常工作。

任何帮助将不胜感激!

4

2 回答 2

0

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

于 2010-11-06T00:25:30.630 回答
0

首先,正如Markos Fragkakis 所说,使用 basic<h:commandButton>而不是 ajaxified <a4j:commandButton>,因为在您的情况下,您对在这里使用 Ajax 操作没有兴趣。

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

如果您对 Java bean 的操作仍未被调用,则可能是在Invoke ApplicationJSF生命周期 阶段之前发生了错误。添加 a<h:messages>将显示可能的问题:

<h:form>
   <h:messages/>
   <h:inputText value="#{movies.name}"/>
   <h:commandButton id="mybutton" value="Modify" action="#{movies.testModify}"/>
</h:form>
于 2010-11-08T14:00:43.277 回答