[PrimeFaces] dataTable cellEditor
Bonjour,
J'ai du mal à récupérer les données sélectionnées dans un dataTable après modification.
Voila le code de la page XHTML :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <prime:dataTable var="ct" value="#{cityBean.citys}" id="tbl" editMode="cell"
paginator="true" rows="10" editable="true" widgetVar="citysTable">
<f:facet name="header">
In-Cell Editing
</f:facet>
<prime:ajax event="cellEdit" listener="#{cityBean.onCellEdit}"
update=":form:messages" />
<prime:column headerText="City" style="width:30%">
<prime:cellEditor>
<f:facet name="output">
<h:outputText value="#{ct.city}" />
</f:facet>
<f:facet name="input">
<prime:inputText value="#{ct.city}" style="width:100%" />
</f:facet>
</prime:cellEditor>
</prime:column>
</prime:dataTable> |
Le ManagedBean:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| @ManagedBean(name = "cityBean")
@RequestScoped
public class CityBean implements Serializable {
private City city;
private List<City> citys;
private CityService cityService;
public CityBean() {
this.city = new City();
cityService = new CityService();
}
public List<City> getCitys() {
citys = cityService.getAll();
System.out.println("size : " + citys.size());
return citys;
}
public City getcity() {
return city;
}
public void setCity(City city) {
this.city = city;
}
public void setCitys(List<City> citys) {
this.citys = citys;
}
public City getCity() {
return city;
}
public String onCreateAction() {
String etat = null;
cityService = new CityService();
FacesContext context = FacesContext.getCurrentInstance();
if (cityService.add(this.city)) {
this.city = new City();
context.addMessage(null, new FacesMessage(
"Réparation ajouté avec succé"));
} else {
context.addMessage(null, new FacesMessage(
FacesMessage.SEVERITY_ERROR, "Réparation non ajouté !",
null));
}
return null;
}
public String onUpdateAction() {
cityService = new CityService();
FacesContext context = FacesContext.getCurrentInstance();
City c = cityService.getById(this.city.getId());
if (cityService.update(c)) {
this.city = new City();
} else {
context.addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_ERROR,
"Modification réussie !", null));
}
return "retourUpdate";
}
public String onDeleteAction() {
cityService = new CityService();
FacesContext context = FacesContext.getCurrentInstance();
if (cityService.delete(city)) {
this.city = new City();
} else {
context.addMessage(null, new FacesMessage(
FacesMessage.SEVERITY_ERROR, "City non supprimé !", null));
}
return null;
}
public void onEdit(RowEditEvent event) {
// DataTable o = (DataTable) event.getSource();
this.city = (City) event.getObject();
System.out.println("city = "+this.city.getCity());
FacesMessage msg = new FacesMessage("Car Edited", this.city.getCity());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public void onCancel(RowEditEvent event) {
FacesMessage msg = new FacesMessage("Car Cancelled",
((City) event.getObject()).getId() + "");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public void onCellEdit(CellEditEvent event) {
Object oldValue = event.getOldValue();
Object newValue = event.getNewValue();
System.out.println("old = "+oldValue);
System.out.println("new = "+newValue);
if(newValue != null && !newValue.equals(oldValue)) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cell Changed", "Old: " + oldValue + ", New:" + newValue);
FacesContext.getCurrentInstance().addMessage(null, msg);
}
}
} |
Merci d'avance