p:spinner p:ajax和f:param混合在一起,bean方法执行多次

时间:2015-06-14 08:06:03

标签: ajax dynamic primefaces spinner

我正在开发Primefaces 4.0,JSF Mojarra 2.1.7和jBoss_7.1.1_Final。

我正在创建的工具主要是一个对话框窗口,显示带有动态列的dataTable(p:columns)

这些动态列显示了像这样的pSpinner:



        

                                        <p:spinner id="updateQj_#{colIndex}_#{rowQj.idQbt}" widgetVar="updateQjJs_#{colIndex}_#{rowQj.idQbt}" stepFactor="1" min="0" max="#{rowQj.qbtType}"
                                                    value="#{rowQj.quantiteDuJour(qjColonne.property)}" onkeydown="return false;"
                                                    styleClass="editQj" rendered="#{not verrouille}" title="Cliquez ici pour modifier la quantité journalière" >

                                            <p:ajax listener="#{recherche.updateQj}" update="@this, :formRecherche:growl" process="@this"/>
                                            <f:param name="idQbt" value="#{rowQj.idQbt}"/>
                                            <f:param name="jour" value="#{qjColonne.property}"/>
                                            <f:param name="ligne" value="#{rowIndex}"/>
                                            <f:param name="colonne" value="#{colIndex}"/>
                                        </p:spinner>                                        
                                </p:column>                                             
                            </p:columns>    

一切似乎工作正常,直到某些未知原因,其中一列中的点击修改了当前值加上之前在另一列中更新的值。要清楚地看到它:如果我一直在同一列中点击/更新微调器,一切正常。如果我单击另一列的微调器,它会更新两个。任何想法将不胜感激。

1 个答案:

答案 0 :(得分:0)

在primefaces4中,p:由p:列组成的单元格中的微调器&gt; p:列并不像它应该的那样,首先点击工作,但在某些时刻,简单的点击会产生不间断的ajax调用,就好像我点击了每个细胞中的每个微调器...经过几天的解决方法,并认为pf在我自己尝试的封面下使用jquery。令人惊讶的是,firebug控制台记录的旋转器不是一个功能&#39;并且jquery.ui.version是1.10.3所以我在jquery的网站上下载了1.10.4,并在其他javascripts之后将它包含在我的标题中。 jquery.ui.version显示1.10.4并且不再出现错误消息。 :) 最后,我在p:datatable

中的p:列的每个p:列中写了这个
    <input id="updateQj_#{rowIndex}_#{colIndex}_#{rowQj.idQbt}"    widgetVar="updateQjJs" class="editQj"     value="#{rowQj.listeDesQj[colIndex].quantiteRealisee}"> ‌​ 
</input> 
<script type="text/javascript"> 
    jQuery("input[id=updateQj_#{rowIndex}_#{colIndex}_#{rowQj.idQbt}]")
    .spinner‌​({  min:0, 
                max:#{rowQj.qMax}, 
                step:1, 
                change:function(){ rmt_updateQj([parameters]); } }); 
</script>