【问题标题】:How to execute another <h:form> using <f:ajax>?如何使用 <f:ajax> 执行另一个 <h:form>?
【发布时间】:2011-12-14 08:19:49
【问题描述】:

我注意到这对我不起作用,我想知道这是否不可能:

<h:form id="one" prependid="false" >
  <h:commandButton>
    <f:ajax execute=":two">
  </h:commandButton>
</h:form>

<h:form id="two" prependid="false">
  ... content ...
</h:form>

当我点击上面的按钮时,我可以看到表单two 上的值没有按预期执行。 这是正常的 JSF 行为吗?
为了“欺骗”它,我通常在表单two 中插入一个隐藏按钮,并在单击表单one 中的按钮时使用JavaScript 代码触发它。但这是一个“技巧”,让我在不确定是否必须做的时候额外工作。

我应该提到rendering 另一种形式是可能的。

prependid 属性会导致问题吗?

提前致谢!

更新添加更多可能相关的信息 - 将prependid="false" 添加到实际代码中使用的表单中。

【问题讨论】:

  • 首先您可以尝试&lt;f:ajax execute="@all"/&gt; 来检查是否真的是 ids 问题(@all 执行页面上的所有内容)。 ajax 标记中缺少的斜线是错字,不是吗?
  • @MattHandy 查看 BalusC 的回答。

标签: ajax jsf-2


【解决方案1】:

不,&lt;f:ajax&gt; 无法做到这一点。它只是提交父表单。 execute 只是告诉 JSF 它必须根据提交的数据处理哪些组件,而不是客户端必须发送哪些请求参数。按钮必须以它所属的形式出现。

【讨论】:

  • 好的..这就解释了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-24
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
相关资源
最近更新 更多