【发布时间】:2014-02-14 03:56:42
【问题描述】:
所以我有 2 个表单和一个带有 f:ajax 的命令按钮。我想在单击按钮时执行第二个表单,但是当我在执行属性上传递表单的 id 时,它似乎忽略了。但是当我用 'execute=":form1"' 替换它时,它运行正确(来自表单的信息被发送到服务器)。有人可以告诉我为什么不能使用第二种形式的 id,或者我该如何实现:用一个按钮从页面执行我想要的任何形式。(因为现在没有信息发送到服务器,只有监听器被调用)。
代码如下:
<h:form id="form1">
<h:panelGrid id="inputSection" >
<h:inputText id="input1" value="#{counterMB.number1}" />
<h:inputText id="input2" value="#{counterMB.number2}" />
</h:panelGrid>
<h:outputLabel id="sumResponse2" value="#{counterMB.sum}" />
</h:form>
<h:form id="form2">
<h:panelGrid id="inputSection" >
<h:inputText id="input1" value="#{counterMB.number1}" />
<h:inputText id="input2" value="#{counterMB.number2}" />
</h:panelGrid>
<h:outputLabel id="sumResponse2" value="#{counterMB.sum}" />
</h:form>
<h:commandButton value="Sum numbers">
<f:ajax event="click" execute=":form2" listener="#{counterMB.sum}" render=":form2 :form1"/>
</h:commandButton>
更新: 所以更明确地说:从我读过的内容来看,我可以使用 ajax 来更新/刷新页面的某些部分等,而不是刷新整个页面。我试图做的是将一些组件以不同的形式分组并一次执行一个表单以查看它的行为方式。如果我使用第一个组(表单)的 id,它可以完美地工作,但如果我使用第二个表单的 id(它调用操作但不从任何表单提交任何数据)则根本不起作用。我不明白为什么。 (对于那些声称我缺乏一些知识的人:这就是提问的原因不是吗?我正在尝试学习一些新东西)
【问题讨论】:
-
TBO,我想知道您的 commandButton 是否有效 - 不在任何形式内。而且我不确定您是否可以同时执行/发送两个表单...
-
你不明白:我不想同时提交 2 个表单或 n 个表单,但我想从 n 个表单的集合中提交某个表单,而不是第一个。正如我上面所说,它适用于第一种形式。我在网络和其他教程/论坛上搜索过这个,我发现其他人抱怨这不起作用(尽管它应该根据 jsf 规范)
-
所以,请更新您的问题,以便您的目标清晰易懂,并且可以被可能能够帮助您实现目标的人以及其他可能希望稍后实现类似目标的人认可.
标签: ajax jsf jsf-2 mojarra ajaxform