मैं JSF 2.0 में एक कस्टम घटक निर्माणJSF 2 कस्टम विशेषता मान के लिए अभिव्यक्ति भाषा होने घटकों विशेषता सेटर
टैग इस तरह दिखता है ट्रिगर नहीं करते :
@FacesComponent("a.b.c.MyTag")
public class UIMyTag extends UIInput {
private String name;
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void encodeBegin(FacesContext context) throws IOException {
ResponseWriter writer = context.getResponseWriter();
logger.debug(getName()); //prints null for name="#{dummyBean.name}"
// and AAA for name="AAA"
logger.debug(getAttributes().get("name")); // always correct value
...
}
....
}
अगर मैं का उपयोग
<x:myTag id="1" name="AAA" />
सब कुछ अपेक्षित के रूप में काम करता है, लेकिन जब मैं myTag के लिए ईएल का उपयोग करता हूं तो setName()
विधि को कभी भी कॉल नहीं किया जाता है। के लिए तो,
<x:myTag id="#{dummyBean.id}" name="#{dummyBean.name}" />
मैं हमेशा name
संपत्ति मेरी encodeBegin
विधि के अंदर के लिए null
मिलता है। डिबगिंग के बाद मैंने देखा है कि setName
विधि कभी भी कॉल नहीं होती है। मैंने सोचा कि शायद ईएल के बारे में कुछ चीजें चीजों को गड़बड़ कर देती हैं (और मुझे अभी भी विश्वास है कि कारण उससे संबंधित है), लेकिन वास्तव में अजीब बात यह है कि id
संपत्ति अच्छी काम करती है: सेटटर को बुलाया जाता है, और मूल्य की अपेक्षा होने पर अपेक्षा की जाती है शुरू करना।
मुझे यह उल्लेख करना होगा कि अगर मैं encodeBegin
विधि से getAttributes().get("name")
पर कॉल करता हूं तो मुझे सही नाम मान मिलता है, लेकिन मुझे लगता है कि यह गेटर और सेटर के साथ क्यों काम नहीं करता है।
कोई भी विचार जो मेरे घटक में गुम है?
उत्तर के लिए धन्यवाद! मैं यह पूछना चाहूंगा कि मुझे अपने घटक के अंदर विभिन्न प्रकार के विशेषताओं के मानों के बीच अंतर करने के लिए कुछ विशेष विधि लागू करनी है या नहीं। (मुझे समझ में आया कि UIComponentBase इसे स्वयं ही संभालता है) और यदि हां, तो ऐसा करने का सबसे अच्छा अभ्यास है ?! – RaresI
नहीं और आपको आम तौर पर इसके बारे में परवाह नहीं करना चाहिए।(मूल्यांकन) विशेषता मान प्राप्त करने के लिए, केवल गेटर को आमंत्रित करें। – BalusC