प्राइमफेस 3.5, मोज़रा 2.1.14। यह मेरा पीएफ datatable है यह एक गैर संपादन योग्य बूलियन स्तंभ 'स्वचालित' नाम से संपादन योग्य 'लेबल' कॉलम होते हैं, और,:,प्राइमफ़ेस में विशिष्ट पंक्ति को अद्यतन करने के लिए दिनांक
public void onEditLabel(CellEditEvent event) {
Object oldValue = event.getOldValue();
Object newValue = event.getNewValue();
if(newValue != null && !newValue.equals(oldValue)) {
DataTable s = (DataTable) event.getSource();
MyEntity d = (MyEntity) s.getRowData();
try {
d.setAutomatic(false);
myDAO.save(d);
addMessage("Change saved!");
} catch (Exception ex) {
addErrorMessage("Label could not be saved!");
getFacesContext().validationFailed();
}
}
}
सेल संपादक काम करता है:
<p:dataTable value="#{bean.contents}" paginator="true" var="row"
editable="true" editMode="cell" rows="25" rowsPerPageTemplate="10,25,50" id="list">
<p:column>
<f:facet name="header"><h:outputText value="header1" /></f:facet>
<p:selectBooleanCheckbox value="#{row.automatic}" disabled="true" id="isAutomatic"></p:selectBooleanCheckbox>
</p:column>
<p:column>
<f:facet name="header"><h:outputText value="header2" /></f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{row.label}"></h:outputText>
</f:facet>
<f:facet name="input">
<p:inputText value="#{row.label}"></p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<p:ajax event="cellEdit" process="@this" listener="#{myBean.onEditLabel}" update="isAutomatic"/>
</p:dataTable>
सेल संपादित घटना श्रोता श्रोता को डेटा भेजता है, और यह डेटाबेस के लिए सही ढंग से जारी है। सेल स्वचालित ईवेंट श्रोता द्वारा 'स्वचालित' ध्वज भी साफ़ किया जाता है, और डेटाबेस के लिए सही ढंग से जारी रहता है। समस्या यह है कि क्लाइंट पर 'स्वचालित' चेकबॉक्स अपडेट नहीं किया गया है।
मैं भी
<p:ajax event="cellEdit" process="@this" listener="#{myBean.onEditLabel}" update="list"/>
जो सही ढंग से चेकबॉक्स अद्यतन करने की कोशिश की, लेकिन यह भी कारण बनता है फोकस खो दिया है, और कचरे बैंडविड्थ।
सेल एडिट ईवेंट निकाल दिए जाने के बाद मैं केवल एक विशिष्ट सेल को कैसे अपडेट कर सकता हूं?
धन्यवाद! यह काम करता है, लेकिन निश्चित रूप से सबसे अच्छा अभ्यास नहीं है। सबसे पहले, मैं विशेष घटक आईडी नामकरण सम्मेलन पर भरोसा कर रहा हूं। दूसरा, मेरे नियंत्रक बीन में अब फ्रंटेंड तर्क (आईडी देखें) शामिल है। पीएफ डेटाटेबल में ऐसी सुविधा जोड़ने का सबसे अच्छा समाधान होगा। आह। :) – rootkit
मैं पूरी तरह से आपसे सहमत नहीं हूं। बैकिंग बीन कड़ाई से प्रस्तुति परत के साथ मिलकर है (उदाहरण के लिए आप AJAX श्रोता कॉल बैकिंग बीन विधि से)। यदि आप बीन का समर्थन करने में व्यवसाय तर्क डालते हैं तो यह बुरा होगा। मैं मानता हूं कि बैकिंग बीन में आईडी डालना बहुत अच्छा नहीं है, लेकिन इस पल में मुझे कोई आसान समाधान नहीं दिख रहा है। – partlov
मैं मानता हूं कि कोई आसान समाधान नहीं है, इसे करना होगा। एक बार फिर धन्यवाद! – rootkit