<;f:ajax>;执行不同的表格

<;f:ajax>;执行不同的表格,ajax,jsf,jsf-2,mojarra,ajaxform,Ajax,Jsf,Jsf 2,Mojarra,Ajaxform,所以我有两个表单和一个命令按钮,上面附加了f:ajax。我想在单击按钮时执行第二个表单,但在传递表单的id on execute属性时,它似乎会忽略。但当我将其替换为'execute=“:form1”'时,它会正确运行(表单中的信息会发送到服务器)。有人能告诉我为什么不能使用第二个表单的id,或者我如何实现这一点:只需一个按钮就可以从页面执行我想要的任何表单(因为现在没有信息发送到服务器,只调用侦听器) 代码如下: <h:form id="form1"> <h:pane

所以我有两个表单和一个命令按钮,上面附加了f:ajax。我想在单击按钮时执行第二个表单,但在传递表单的id on execute属性时,它似乎会忽略。但当我将其替换为'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(它调用操作,但不提交任何表单中的任何数据),它根本不起作用。我不明白为什么。(对于那些声称我缺乏一些知识的人来说:这就是提问的原因,不是吗?我正在尝试学习一些新的东西)

你似乎缺乏关于jsf如何工作的基本知识。命令按钮必须位于窗体内。一个按钮提交两份表格是不可能的。 f:ajax的属性execute告诉您要处理哪些组件,例如,如果您有两个输入文本,那么您可以使用该属性只处理一个,而忽略另一个。但是你不可能做你想做的事


提交两个表单并执行一次单个操作方法是没有意义的。。有两种形式是没有意义的。为什么不将所有内容都放在一个表单中?

在当前的解决方案中,在任何
h:form
之外使用
h:commandButton
——这有点不利于HTML和JSF,所以不要指望它。我的建议是

  • 如果您使用Richfaces,则在每个表单中放置一个
    a4f:jsFunction
    ,并从任何地方触发生成的Javascript
  • 如果您使用Primefaces,则在每个表单中放置一个
    p:remoteCommand
    ,并从任意位置触发生成的javascript
  • 如果您既不使用任何一个,请在每个表单中放置一个
    ,将样式设置为隐藏,然后使用javascript提交表单

希望它能帮上忙……

TBO,我想知道你的commandButton是否能用——它不在任何形式的内部。我不确定您是否可以同时执行/发送两个表单……您不明白:我不想同时提交两个表单,或者n个表单,但我想从n个表单的集合中提交某个表单,而不是第一个表单。正如我上面所说的,它对于第一种形式非常有效。我在web和其他教程/论坛上搜索过这个,我发现其他人抱怨说这个不起作用(尽管根据jsf规范应该这样做),请更新您的问题,使您的目标清晰易懂,并且能够被有可能帮助您实现目标的人以及以后可能希望实现类似目标的其他人所认可。此外,OP还缺乏HTML工作原理的基本知识。