my Problem is, that when i click the row edit-icon next to the row and make a change and after that i click the check-icon, nothing happens. But if i click the cancel-icon and the rowEditCancel event i running, i get the message in the p:growl component.
This is my view code:
<p:dataTable value="#{mainBean.liste}" styleClass="tabelle"
var="daten" editable="true" rows="6"
emptyMessage="Keine Daten bisher Erfasst"
widgetVar="erfasstTabelle" paginator="true" resizableColumns="true"
paginatorPosition="bottom" id="tabelleUebersicht"
paginatorTemplate=" {CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown} Direkt zu Seite: {JumpToPageDropdown}"
currentPageReportTemplate="Seite: {currentPage} von {totalPages}"
filteredValue="#{mainBean.gefiltert}">
<p:ajax event="rowEdit" listener="#{mainBean.onRowEdit}" update=":myForm:msgs :myForm:tabelleUebersicht" />
<p:ajax event="rowEditCancel" listener="#{mainBean.onRowCancel}" update=":myForm:msgs :myForm:tabelleUebersicht" />
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Alle Felder durchsuchen" />
<p:inputText id="globalFilter"
onkeyup="PF('erfasstTabelle').filter()" style="width:150px"
placeholder="Suchbegriff" />
</p:outputPanel>
</f:facet>
<p:column headerText="AVS ID" filterMatchMode="startsWith" filterBy="#{daten.nummer}">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{daten.nummer}" />
</f:facet>
<f:facet name="input">
<p:inputText id="nummerIn" value="#{daten.nummer}"
style="width:100%" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Rechtsform" filterMatchMode="startsWith" filterBy="#{daten.rechtsform}">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{daten.rechtsform}" />
</f:facet>
<f:facet name="input">
<p:inputText id="rechtsfIn" value="#{daten.rechtsform}" style="width:100%" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Rechtsf.Speziell">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{daten.rechtSpeziell}" /></f:facet>
<f:facet name="input">
<p:selectOneMenu value="#{daten.rechtSpeziell}" style="width:100%">
<f:selectItems value="#{mainBean.rechteGenau}" var="r" itemLabel="#{r}" itemValue="#{r}"/>
</p:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Erfasser" filterMatchMode="startsWith" filterBy="#{daten.erfasser}">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{daten.erfasser}" /></f:facet>
<f:facet name="input">
<p:selectOneMenu value="#{daten.erfasser}" style="width:100%">
<f:selectItems value="#{mainBean.erfassers}" var="e" itemLabel="#{e}" itemValue="#{e}"/>
</p:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Datum">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{daten.datum}" />
</f:facet>
<f:facet name="input">
<p:inputText id="datumIn" value="#{daten.datum}" style="width:100%" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column style="width:32px">
<p:commandLink value="löschen" styleClass="ui-icon ui-icon-trash" />
</p:column>
<p:column style="width:32px">
<p:rowEditor />
</p:column>
</p:dataTable>
And this is my bean
@ManagedBean
@ViewScoped
public class MainBean implements Serializable{
private static final long serialVersionUID = 1L;
private ErfasstDAO erfasstDAO;
private List<Erfasst> liste;
private List<Erfasst> gefiltert;
private List<String> erfasser;
private boolean neu;
private List<String> rechtSpeziell;
private List<String> rechteGenau;
//Neuanlage
private Long nummer = null;
private FindeId findeId;
private String recht;
private List<String> rechtsformen;
private String rechtDetail = "";
private Date datum;
private String notiz = "";
private List<String> erfassers;
@PostConstruct
private void init(){
findeId = new FindeId();
erfasstDAO = new ErfasstDAO();
erfasser = new ArrayList<>();
erfasser.add("Benjamin");
erfasser.add("Uwe");
erfasser.add("Rolf");
liste = erfasstDAO.alleEintraege();
rechteGenau = new ArrayList<String>();
rechteGenau.add(" ");
rechteGenau.add("Vollständig");
rechteGenau.add("Unterlagen gezogen");
rechteGenau.add("Identifizierung/-wB-Ermittlung durch CP");
rechtsformen = new ArrayList<>();
rechtsformen.add("natürliche Person");
rechtsformen.add("juristische Person");
erfassers = new ArrayList<>();
erfassers.add("Benjamin");
erfassers.add("Uwe");
erfassers.add("Rolf");
}
public void setRechteGenau(List<String> rechteGenau) {
this.rechteGenau = rechteGenau;
}
public void setErfassers(List<String> erfassers) {
this.erfassers = erfassers;
}
public void inputListener(AjaxBehaviorEvent event) {
if (event != null) {
UIInput input = (UIInput) event.getComponent();
Long id = (Long) input.getValue();
if (id != 0) {
if (findeId.finden(id) != null) {
FacesMessage m = new FacesMessage(
FacesMessage.SEVERITY_ERROR, "Vorhanden",
findeId.finden(id) + " bereits vorhanden");
FacesContext.getCurrentInstance().addMessage(null, m);
} else {
FacesMessage m = new FacesMessage(
FacesMessage.SEVERITY_INFO, "Noch frei", id
+ " noch nicht vergeben!");
FacesContext.getCurrentInstance().addMessage(null, m);
}
}
}
}
public void speichern() {
Erfasst er = new Erfasst();
er.setNummer(nummer);
er.setErfasser("Benjamin");
er.setRechtsform(recht);
er.setDatum(datum);
er.setRechtSpeziell(rechtDetail);
er.setNotiz(notiz);
if(erfasstDAO.neu(er))
{
FacesMessage m = new FacesMessage(
FacesMessage.SEVERITY_INFO, "Angelegt", String.valueOf(nummer));
FacesContext.getCurrentInstance().addMessage(null, m);
}
liste = erfasstDAO.alleEintraege();
}
public void onRowEdit(RowEditEvent event) {
if(erfasstDAO.abgeaendert((Erfasst) event.getObject()))
{
FacesMessage msg = new FacesMessage("Geändert", String.valueOf(((Erfasst) event.getObject()).getNummer()));
FacesContext.getCurrentInstance().addMessage(null, msg);
}
else
{
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Fehler", "Beim ändern von: " + String.valueOf(((Erfasst) event.getObject()). getNummer() + " ist ein Fehler aufgetreten"));
FacesContext.getCurrentInstance().addMessage(null, msg);
}
liste = erfasstDAO.alleEintraege();
}
public void onRowCancel(RowEditEvent event) {
FacesMessage msg = new FacesMessage("Bearbeitung abgebrochen", String.valueOf(((Erfasst) event.getObject()).getNummer()));
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public boolean isNeu() {
return neu;
}
public void setNeu(boolean neu) {
this.neu = neu;
}
public List<String> getRechtSpeziell() {
return rechtSpeziell;
}
public void setRechtSpeziell(List<String> rechtSpeziell) {
this.rechtSpeziell = rechtSpeziell;
}
public Long getNummer() {
return nummer;
}
public void setNummer(Long nummer) {
this.nummer = nummer;
}
public String getRecht() {
return recht;
}
public void setRecht(String recht) {
this.recht = recht;
}
public List<String> getRechtsformen() {
return rechtsformen;
}
public void setRechtsformen(List<String> rechtsformen) {
this.rechtsformen = rechtsformen;
}
public String getRechtDetail() {
return rechtDetail;
}
public void setRechtDetail(String rechtDetail) {
this.rechtDetail = rechtDetail;
}
public Date getDatum() {
return datum;
}
public void setDatum(Date datum) {
this.datum = datum;
}
public String getNotiz() {
return notiz;
}
public void setNotiz(String notiz) {
this.notiz = notiz;
}
public List<String> getRechteGenau() {
return rechteGenau;
}
public List<String> getErfassers() {
return erfassers;
}
public List<Erfasst> getListe() {
return liste;
}
public List<Erfasst> getGefiltert() {
return gefiltert;
}
public void setGefiltert(List<Erfasst> gefiltert) {
this.gefiltert = gefiltert;
}
}