मान लीजिए कि मैं इस तरह से एक आउटपुट टेक्स्ट घटक निर्दिष्ट करता हूं:
<h:outputText value="#{ManagedBean.someProperty}"/>
यदि मैं गेट मैसेज के लिए एक लॉग मैसेज प्रिंट करता हूं someProperty
और पेज लोड करता हूं , तो यह नोटिस करना तुच्छ है कि रिक्वेस्ट को रिक्वेस्ट एक से अधिक बार रिक्वेस्ट की जा रही है (मेरे मामले में दो या तीन बार ऐसा ही हुआ है):
DEBUG 2010-01-18 23:31:40,104 (ManagedBean.java:13) - Getting some property
DEBUG 2010-01-18 23:31:40,104 (ManagedBean.java:13) - Getting some property
यदि मूल्य की someProperty
गणना करना महंगा है, तो यह संभावित रूप से एक समस्या हो सकती है।
मैंने थोड़ा गुगली की और लगा कि यह एक ज्ञात मुद्दा है। एक वर्कअराउंड में एक चेक शामिल करना और यह देखना था कि क्या इसकी गणना पहले ही की जा चुकी है:
private String someProperty;
public String getSomeProperty() {
if (this.someProperty == null) {
this.someProperty = this.calculatePropertyValue();
}
return this.someProperty;
}
इसके साथ मुख्य समस्या यह है कि आपको बॉयलरप्लेट कोड का भार मिलता है, न कि निजी चर का उल्लेख करने के लिए, जिनकी आपको आवश्यकता नहीं है।
इस दृष्टिकोण के विकल्प क्या हैं? क्या इतना अनावश्यक कोड के बिना इसे प्राप्त करने का एक तरीका है? क्या जेएसएफ को इस तरह से व्यवहार करने से रोकने का कोई तरीका है?
आपके सहयोग के लिए धन्यवाद!