एक Collection
यह आसान है के लिए, बस ईएल में Colleciton#contains()
विधि का उपयोग करें।
<h:panelGroup id="p1" rendered="#{bean.panels.contains('p1')}">...</h:panelGroup>
<h:panelGroup id="p2" rendered="#{bean.panels.contains('p2')}">...</h:panelGroup>
<h:panelGroup id="p3" rendered="#{bean.panels.contains('p3')}">...</h:panelGroup>
एक Object[]
(सरणी) के लिए, आप ईएल 3.0 की एक न्यूनतम जरूरत है और अपनी नई लैम्ब्डा समर्थन का उपयोग होगा।
<h:panelGroup id="p1" rendered="#{bean.panels.stream().anyMatch(v -> v == 'p1').get()}">...</h:panelGroup>
<h:panelGroup id="p2" rendered="#{bean.panels.stream().anyMatch(v -> v == 'p2').get()}">...</h:panelGroup>
<h:panelGroup id="p3" rendered="#{bean.panels.stream().anyMatch(v -> v == 'p3').get()}">...</h:panelGroup>
आप अभी तक ईएल 3.0 पर नहीं हैं, तो आप एक कस्टम ईएल समारोह बनाने की आवश्यकता होगी। एक ठोस उदाहरण के लिए, How to create a custom EL function to invoke a static method? E.g देखें।
public static boolean contains(Object[] array, Object item) {
return Arrays.asList(array).contains(item);
}
जो
<function>
<function-name>contains</function-name>
<function-class>com.example.Functions</function-class>
<function-signature>boolean contains(java.lang.Object[], java.lang.Object)</function-signature>
</function>
रूप में पंजीकृत है और
<h:panelGroup ... rendered="#{func:contains(bean.panels, 'u1')}">
के रूप में प्रयोग की जाने वाली इस JSTL में उपलब्ध नहीं है। fn:contains()
है, लेकिन यह केवल String
मानों पर काम करता है।
यदि आप केवल डेटा धारण करने से थोड़ा अधिक करना चाहते हैं तो सरणी का उपयोग न करें। तब संग्रह का प्रयोग करें। – BalusC
अच्छी तरह से, मैं इसे इनपुट विशेषता पर उपयोग कर रहा हूं, लेकिन विधि को कॉल नहीं किया जा रहा है: 'चेक = "# {utils.contains (myBean.array,' myBean.someIndicator ')?' चेक ':' '}" ' –
क्या कोई ईएल त्रुटियां हैं? वैसे, जिस तरह से आप 'चेक' का उपयोग करते हैं, वह बिल्कुल सही नहीं है। जब इसकी विशेषता के बावजूद संपूर्ण विशेषता मौजूद होती है तो एक चेकबॉक्स/रेडियोबुटटन चेक किया जाता है। आप मूल रूप से विशेषता मान के बजाय विशेषता नाम मुद्रित करना चाहते हैं। – BalusC