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