我知道这听起来可能是一个基本问题,但我很难搞清楚这一点。首先,我有这样的形式:
<h:form>
<h:inputText value="#{movies.name}"/>
<a4j:commandButton id="mybutton" value="Modify" immediate="true" action="#{movies.testModify}"/>
</h:form>
我想从movie bean的testModify()方法中捕获输入文本中的值。我的问题是testModify根本没有被调用。我注意到的奇怪行为是,当我删除h:form标签时,方法会被调用,但我仍然不知道如何从输入文本中获取值。
从我读过的,a4j:commandButton需要h:form才能正常工作。
任何帮助将非常感谢!
使用h:commandButton
而不是a4j:commandButton
。第一个是提交表单的标准JSF按钮,后者执行ajax请求。
首先,正如Markos Fragkakis所述,使用基本的<h:commandButton>
而不是ajaxified <a4j:commandButton>
,就像你的情况一样,你没有兴趣在这里使用Ajax动作。
其次,删除此按钮上的immediate="true"
属性。使用此属性means that,应立即执行默认的ActionListener(即在请求处理生命周期的Apply Request Values
阶段),而不是等到Invoke Application
阶段。
如果你仍然没有调用你对Java bean的操作,那么在qazxsw poi JSF Invoke Application
qazxsw poi之前可能出现了错误。添加lifecycle将显示可能的问题:
phase