मेरे पास 2 कॉलम (नाम और विवरण) के साथ एक डाटाटेबल है और जब कोई व्यक्ति एक पंक्ति अपडेट करता है और execBacking.update
विधि को ट्रिगर करता है तो मैं अपने डेटाबेस को अपडेट करना चाहता हूं।जेएसएफ - प्राइमफेसेस RowEditEvent का उपयोग करते समय पुराने और नए मूल्य कैसे प्राप्त करें?
इस विधि में, मुझे event.getObject()
कास्टिंग करके नए मान मिलते हैं, लेकिन मैं पुराने मान भी कैसे प्राप्त कर सकता हूं? नाम मेरी प्राथमिक कुंजी है इसलिए मुझे यह जानने के लिए पुराने मूल्य की आवश्यकता है कि डीबी में कौन सी पंक्ति अपडेट हो।
एक्सएचटीएमएल पेज
<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>
बैकअप सेम
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()));
}
}
क्या आप पूरी पंक्ति का पुराना मान एक ऑब्जेक्ट या व्यक्तिगत कॉलम के रूप में प्राप्त करने में रुचि रखते हैं? – kolossus
या तो काम करेगा। मुझे केवल 'नाम' का मूल मूल्य चाहिए क्योंकि यह पीके है। – Catfish