2 sütun (isim ve açıklama) içeren bir veritabam var ve bir kullanıcı bir satırı güncelleştirdiğinde ve execBacking.update
yöntemini tetikleyen onay işaretini tıkladığında veritabanımı güncellemek istiyorum.JSF - Primefaces RowEditEvent kullanırken eski ve yeni değerler nasıl alınır?
Bu yöntemde, event.getObject()
'u seçerek yeni değerler alıyorum, ancak eski değerleri nasıl alabilirim? İsim birincil anahtarım, bu yüzden db'de hangi satırın güncelleneceğini bilmek için eski değere ihtiyacım var.
xhtml sayfa
<p:ajax event="rowEdit" listener="#{execBacking.update}" update=":execForm:execMessages" />
<p:column headerText="Name">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{exec.name}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{exec.name}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Description">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{exec.description}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{exec.description}" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Actions">
<p:rowEditor />
<p:commandLink styleClass="ui-icon ui-icon-trash" type="submit" actionListener="#{execBacking.delete}" update=":execForm:execMessages" >
<f:attribute name="execName" value="#{exec.name}" />
</p:commandLink>
</p:column>
</p:dataTable>
Ben değilname
birincil anahtar olan tavsiye, ancak bunun yerine otomatik artan id
alan eklemek ve yapmak istiyorum
public void update(RowEditEvent event) {
Dao dao = new Dao(ds);
Exec exec = (Exec) event.getObject();
System.out.println("name = "+exec.getName()); //New name
System.out.println("desc = "+exec.getDescription()); //New desc
try {
// If the new exec was updated successfully
if(dao.updateExec(accessBacking.getUsername(), null, exec.getName(), exec.getDescription())) {
FacesContext.getCurrentInstance().addMessage("growl", new FacesMessage(FacesMessage.SEVERITY_INFO, "Success", "Exec Updated Successfully!"));
} else {
FacesContext.getCurrentInstance().addMessage("messages", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "Error Updating Exec!"));
}
} catch (Exception e) {
FacesContext.getCurrentInstance().addMessage("messages", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", e.getMessage()));
}
}
Tüm satırın eski değerini tek bir nesne veya tek tek sütun olarak almak ister misiniz? – kolossus
Ya işe yarayacaktı. İhtiyacım olan tek şey PK olduğu için 'isim'in orijinal değeri. – Catfish