【问题标题】:JSF Submit Form to CommandButton using AjaxJSF 使用 Ajax 向 CommandButton 提交表单
【发布时间】:2018-02-01 09:44:33
【问题描述】:

https://www.primefaces.org/showcase/ui/ajax/event.xhtml

我想在展示中做同样的事情,但不刷新页面。喜欢:在 inputtext 中设置值并单击按钮查看结果,但如果我有 <p:ajax event="blur" /><p:ajax/> 那么我必须在按钮上单击两次

 <p:inputText id="data" value="#{buttonView.data}">
   <p:ajax/>
 </p:inputText>


<p:commandButton value="Ajax Submit" id="ajax"  actionListener="#{buttonView.buttonAction}" />

也许像使用 outpupanel 并在命令按钮中更新该面板?

【问题讨论】:

    标签: ajax jsf primefaces commandbutton


    【解决方案1】:

    我不明白你为什么将使用p:ajax 的概念与p:commandButton 的功能混为一谈。

    基本上,p:ajax 的使用旨在部分处理 字段值并更新form 的组件,即使没有 提交。

    示例: 您在屏幕(比如注册)上有国家和州下拉菜单(预填充)以及其他一些字段,但如果用户更改国家/地区,您需要重新填写国家下拉菜单并在屏幕上异步更新。在那里你需要使用p:ajax

    另一方面,p:commandButton 旨在提交form (最初不更新组件)。不过也支持 使用update 属性更新组件。

    示例: 现在,用类似的下拉菜单重新考虑上面的示例(但使用固定值禁用)。现在您知道您的屏幕没有任何需要更新的内容,您只需处理验证(如果有)并提交表单(如果需要更新)。

    就您而言,是否使用p:inputText 上的p:ajax 在屏幕上进行一些异步更新,并使用p:commandButton 最终提交form,这完全取决于您的要求。

    【讨论】:

      【解决方案2】:

      如果您要使用&lt;p:commandButton /&gt;,则将提交表单。在这种情况下,使用&lt;p:commandButton /&gt;update 属性来更新目标组件。

      如果您想在键入后立即更新另一个组件,请使用&lt;p:ajax event="keyup" update="your_target_component_id" /&gt; 更新您的目标组件。 (Y我们的事件可以是keyup、keypress、change、blur等)

      【讨论】:

        【解决方案3】:

        取而代之的是 p:ajax 尝试 f:ajax。您可以使用 一旦值发生变化,同样会反映在 backing bean 中。

        【讨论】:

        • 完全不相关..,也应该与 PrimeFaces 一起使用。很可能操作有其他(不可见的)问题
        猜你喜欢
        • 1970-01-01
        • 2012-06-26
        • 2011-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-19
        • 2012-11-16
        相关资源
        最近更新 更多