我有一个数据表,当用户检查或取消选中其中一个chceckbox时,我想通过编程编辑其组件的值 这是数据表:
<p:dataTable var="car" style="width: 270px;margin-top: 15px;margin-left: 60px" binding="#{editCommandController.hd}" value="#{editCommandController.lp}" id="carList" editable="true">
<f:facet name="header">
Stock Papiers
</f:facet>
<p:column headerText="Libéllé" style="width:70px">
<h:outputText value="#{car.libelle}" style="width: 70px;" label="Year"/>
</p:column>
<p:column headerText="Stock" style="width:40px">
<h:outputText value="#{car.stock}" label="Year"/>
</p:column>
<p:column headerText="Choisir" style="width:40px;margin: auto;">
<p:selectBooleanCheckbox id="karim" binding="#{editCommandController.tmp}" value="#{car.checked}" disabled="#{editCommandController.result gt car.stock}" >
<p:ajax listener="#{editCommandController.checkListener}"/>
</p:selectBooleanCheckbox>
</p:column>
</p:dataTable>
这是managedBean:
public void checkListener(AjaxBehaviorEvent e) {
System.out.println("je suis "+e.getComponent().getClientId()+" utilisé : et tmp :" );
List<Papier> lp1;
lp1 = new ArrayList();
lp1 = (List<Papier>) getHd().getValue();
// getHd().se
System.out.println("lp1.size() : "+lp1.size());
Boolean a = true;
System.out.println("ce bool a = "+a);
for(int i = 0 ; i< lp1.size();i++){
System.out.println("alors le cheched est : "+lp1.get(i).getChecked());
if(lp1.get(i).getChecked()){
if(lastChecked != null){
for(int j = 0;j<lp1.size();j++){
if(lp1.get(j).getId().equals(lastChecked)){
lp1.get(j).setChecked(false);
break;
}
}
lastChecked = lp1.get(i).getId();
}else{
lastChecked = lp1.get(i).getId();
}
}
}
System.out.println("avant d'affecter voila ce quilya : ");
for(int i = 0 ; i< lp1.size();i++){
System.out.println("alors le cheched n "+i+" est : "+lp1.get(i).getChecked());
}
org.primefaces.component.datatable.DataTable editdt = new DataTable();
editdt.setValue(lp1);
setHd(editdt);
//getHd().setValue(lp1);
}
也在managedBean中我有:
private org.primefaces.component.datatable.DataTable hd;
public org.primefaces.component.datatable.DataTable getHd() {
return hd;
}
public void setHd(org.primefaces.component.datatable.DataTable hd) {
this.hd = hd;
}
如上所述,我使用绑定属性将数据表与managedBean链接但是当我使用
时org.primefaces.component.datatable.DataTable editdt = new DataTable();
editdt.setValue(lp1);
setHd(editdt);
//getHd().setValue(lp1);
我没有在数据表上看到我的更改 你有什么主意吗 感谢
答案 0 :(得分:0)
您没有在客户端更新数据表以反映您在服务器端所做的更改。使用update= "carList"
通过ajax刷新数据表到ajax事件。