मैं अन्य वर्ग के साथ किसी अन्य पृष्ठ में मूल्यों को पुनर्प्राप्त करने के लिए समान रणनीति का उपयोग कर रहा हूं, यह वहां ठीक काम कर रहा है लेकिन नीचे के मामले में यह मान नहीं दिखा रहा है।
कृपया कोई विचार?
डेटाबेस मान प्राप्त करने के लिए निम्नलिखित विधि है।
public List<ProductBean> getPc() {
int i = 0;
Connection conn = null;
PreparedStatement pstmt = null;
// if(FacesContext.getCurrentInstance().getRenderResponse())
List<ProductBean> pc= new ArrayList<ProductBean>();
try {
conn = getVConnection();
String query = "select * from pictures";
pstmt = conn.prepareStatement(query);
//pstmt.setInt(1,this.id);
rs = pstmt.executeQuery();
while(rs.next())
{
System.out.println(rs.getInt(1));
System.out.println(rs.getString(2));
pc.add(i,newProductBean(rs.getInt(1),rs.getString(2)));
i++;
}
pstmt.close();
rs.close();
conn.close();
}catch (Exception e)
{
e.printStackTrace();
System.out.println("Error Data : " + e.getMessage());
}
return pc;
}
निम्नलिखित है जेएसएफ पेज
<h:dataTable styleClass="panelGridColums" value="#{tableBean.pc}" var="p" border="1" >
<h:column>
<f:facet name="header">Product no</f:facet>
<h:outputText value="#{p.productNo}"/>
</h:column>
<h:column>
<f:facet name="header">Product name</f:facet>
<h:outputText value="#{p.p2name}"/>
</h:column>
</h:dataTable>
2 जवाब
यदि आपको पुनर्प्राप्त डेटा या त्रुटियों का कोई प्रिंट नहीं दिखाई देता है, तो इसका सीधा सा अर्थ है कि pictures
तालिका खाली है। या हो सकता है कि आप इसे products
टेबल बनाना चाहते हैं। या हो सकता है कि आप वह कोड नहीं चला रहे हैं जो आपको लगता है कि आप चला रहे हैं।
ध्यान दें कि आपके पास पोस्ट कोड में संकलन त्रुटि है:
pc.add(i,newProductBean(rs.getInt(1),rs.getString(2)));
लेकिन मैं मान लूंगा कि प्रश्न लिखते समय यह एक लापरवाह टाइपो है।
समस्या से असंबंधित, गेटटर पद्धति में डेटाबेस इंटरेक्शन कार्य करना एक बहुत बुरा विचार है। बीन के जीवन के दौरान एक गेट्टर को कई बार कहा जा सकता है। इसे पूरी तरह से (प्रीपॉप्युलेटेड) संपत्ति वापस करनी चाहिए, न कि कुछ महंगे व्यवसायिक काम करने के लिए जो एक बार किया जाना चाहिए। कोड के उस टुकड़े को बीन कन्स्ट्रक्टर में ले जाएं, अधिमानतः एक स्टैंडअलोन क्लास/विधि कॉल के स्वाद में।
public TableBean() throws SQLException {
this.pc = productService.list();
}
सब कुछ अच्छा लगता है। शायद आप निम्न में से किसी एक बिंदु को आजमा सकते हैं:
- यह देखने के लिए ब्रेकपॉइंट के साथ अपनी विधि को चिह्नित करें, कि क्या विधि वास्तव में लागू की गई है
- यह देखने के लिए एक System.out.println(rs.next ()) आज़माएं कि क्या यह सत्य है और परिणाम सेट भर गया है।