एक तरीका होता है, को देखने के
JSF EL: instanceof reserved but not yet implemented?
हालांकि, instanceof
ऑपरेटर अभी भी लागू नहीं है, कम से कम Mojarra 2.1 में। यहाँ बग के लिए वोट करें:
http://java.net/jira/browse/JSP_SPEC_PUBLIC-113
सबसे अच्छा समाधान का वर्तमान में एक समर्थन सेम में वर्ग के नाम को स्टोर करने के शायद बजाय प्रत्येक वर्ग के लिए एक बूलियन परीक्षा पद्धति बनाने के मनुष्य:
public String getSelectedNodeClassName()
{
return selectedNode.getClass().getSimpleName();
}
तो यह बलुस और फ्लैश के समाधान का मिश्रण होगा। हालांकि यह BalusC की तुलना में JSF में और अधिक पढ़े जा सकेंगे प्लस यह काफी मिलता-जुलता भविष्य instanceof
ऑपरेटर उपयोग:
rendered="#{nodeManager.selectedNodeClassName eq 'ChapterNode'}"
इस रूप में फ्लैश सुझाव दिया समर्थन सेम पर कक्षा की परीक्षा में एक विधि का उत्पादन नहीं होगा। हालांकि फ्लैश की तुलना में यह धीमा हो सकता है।
इंटरफेस के लिए काम नहीं करेगा ... इसके लिए कोई सुझाव? – Lucas
@ लुकास: यदि कार्यान्वयन एक इंटरफेस है तो यह असंभव है :) यदि आपको इसके साथ कोई समस्या है, तो यह किसी और चीज के कारण होता है। – BalusC
क्लास स्ट्रिंग टेस्ट सुझाव कुछ परिस्थितियों में उपयोगी है, लेकिन यह इंटरफेस या उप-वर्गों के लिए काम नहीं करता है। उदाहरण के लिए एक वास्तविक और तत्काल आवश्यकता है। कृपया यहां वोट दें: http://java.net/jira/browse/JSP_SPEC_PUBLIC-113। संबंधित समस्या भी देखें, 'रेंडर' के अलावा किसी प्रकार के परीक्षण का उपयोग करके किसी मिलान प्रकार के लिए केवल एक प्रकार के लिए बाध्य एक समग्र घटक को कॉल करें, जो निर्माण चरण के दौरान काम नहीं करता है (http: // stackoverflow के नीचे टिप्पणी। कॉम/प्रश्न/16665705/जेएसएफ-कैसे-रोक-स्टैक ओवरफ्लो-देय-टू-रिकर्सन-फॉर-बिल्ड-चरण-बावजूद-रेंडर) –