【问题标题】:Supported p:ajax events when nested inside h:form [duplicate]嵌套在 h:form 中时支持的 p:ajax 事件 [重复]
【发布时间】:2015-02-16 13:08:12
【问题描述】:

我反复找不到将不同 JSF/PrimeFaces 标签映射到支持的<p:ajax> 事件的矩阵。这非常令人沮丧,因为它限制了我对如何使用 ajax 的掌握。

一个特定的例子是在<h:form> 标记内,当我希望视图在用户将焦点设置在表单中的任何位置时通知控制器:

<h:form>
    <p:ajax event="onClick" listener="#{myController.clickListener}"/>

但我明白了

<p:ajax> Event:onClick is not supported.

当一个标签嵌套在该标签内时,我如何找到所有受支持的 p:ajax 事件列表(在本例中为 h:form 但实际上是其他任何事件)?我知道 this related thread 的存在,但它在任何地方都没有提供解决方案(我尝试转到 PF 文档 PDF 但没有找到)。

【问题讨论】:

    标签: ajax jsf primefaces


    【解决方案1】:

    通常,ajax 方法是 javascript 方法的替代品,当然在服务器上运行。 基本上要知道事件的名称是什么,您只需要查找它们的 javascript 等价物的名称。

    例如,如果您在表单中有 javascript 事件 onclick,那么表单的 ajax 事件将只是“点击”。在你的例子中:

    <h:form>
       <p:ajax event="click" listener="#{myController.clickListener}"/>
    </h:form>
    

    【讨论】:

    • 有趣的是,我同时也得到了同样的发现。但是,我还有另一个相关的问题:您知道将单个参数从视图传回控制器的好的h:form 字段是什么吗?我尝试使用 ID,但这不是以编程方式设置的。然后我尝试了title 并且有效(控制器中的String title = form.getTitle();),但我不确定为此使用表单标题是否有不良副作用,即是否会破坏标题属性。另外,有没有办法通过javax.faces.component.html.HtmlForm 检索控制器中的表单字段
    • 嗯,这是一个不同的问题,我不确定我是否理解你的意思。你提到的“参数”是什么?因为如果它是另一个组件的值或类似的东西,并且它绑定到控制器上的属性,并且您想在 ajax 方法中恢复此属性,您所要做的就是在执行时仅处理该特定组件阿贾克斯。所以在你上面的例子中,它会是这样的:&lt;p:ajax event="click" listener="#{myController.clickListener}" process="yourComponentId"/&gt;
    • 关于您在 java 端通过表单检索字段的问题,我不知道,因为我从未使用过绑定组件。您是否有特定的理由将整个字段绑定到 java 端,而不是字段的值?
    猜你喜欢
    • 2016-11-24
    • 2014-11-18
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多