【问题标题】:JSF- <p:dataTable> issue with the AjaxmethodJSF- Ajax 方法的 <p:dataTable> 问题
【发布时间】:2014-07-17 17:49:47
【问题描述】:

我有一个&lt;p:dataTable&gt; 并且连续我有一个日期字段,每当用户通过系统或手动更改日期时,我需要向用户显示对话,将调用 Ajax 方法来更新来自支持的消息豆子。

这是我正在使用的特定行的代码。

<p:calendar value="#{dets.exceptionDueDate}" pattern="MM/dd/yyyy"
                            size="10" navigator="true"
                            rendered="#{systemDetailsBean.editCmdActionflg==true and (dets.firstColumn!='1' or dets.secondColumn!='1')}">
                            <f:convertDateTime pattern="MM/dd/yyyy" />
                            <p:ajax event="dateSelect"
                                listener="#{systemDetailsBean.showPopup}"
                                process="@this :SystemDetailsinfoForm:line :commentsform:commentsdt"
                                partialSubmit="true" />
                            <p:ajax event="change" listener="#{systemDetailsBean.showPopup}"
                                process="@this :SystemDetailsinfoForm:line :commentsform:commentsdt"
                                partialSubmit="true" />
                            <f:attribute name="index" value="_#{index}" />
                            <f:attribute name="componentId" value="exe" />
                        </p:calendar>


如您所见,日历正在调用两个事件方法,即“dateselect”和“change”
我添加了两种方法,因为用户可能能够以手动和系统的方式提供日期。

backing bean中的Ajax方法如下

   public void showPopup(ActionEvent event) { 

String compId = (String) event.getComponent().getAttributes()
                        .get("componentId");
                int index = Integer.parseInt(((String) event.getComponent()
                        .getAttributes().get("index")).replace("_", ""));
//Blah blah...
    }


我的问题是考虑&lt;p:dataTable&gt;12 rows,当我更改特定行中的日期列时,为12 times 调用AjaxMethod。因此,我无法处理其中的一些消息支持 bean 中的 Ajax 方法。

当我在特定行中选择日期列时,如何才能限制仅调用一次 Ajax 方法。如您所见,我可以获取该行的索引。 但我不知道如何限制 XHTML 中的方法调用。

任何建议都会对解决这个问题很有帮助。

【问题讨论】:

    标签: java ajax jsf-2 primefaces datatable


    【解决方案1】:

    我通过用“update”属性替换“process”属性并添加了“execute=@this”属性解决了这个问题。

    这是我更新的代码

    <p:ajax event="dateSelect"    execute="@this"
                                    listener="#{systemDetailsBean.showPopup}"
                                    update="@this :SystemDetailsinfoForm:line :commentsform:commentsdt"  
                                    partialSubmit="true" />
                                <p:ajax event="change" listener="#{systemDetailsBean.showPopup}" execute="@this"
                                    update="@this :SystemDetailsinfoForm:line :commentsform:commentsdt"
                                    partialSubmit="true" />
    

    【讨论】:

      猜你喜欢
      • 2014-05-14
      • 1970-01-01
      • 2014-12-18
      • 2011-06-17
      • 2011-07-12
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多