Per un Collection
è facile, basta utilizzare il metodo Colleciton#contains()
in EL.
<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>
Per un Object[]
(array), avresti bisogno di un minimo di EL 3.0 e utilizzare il nuovo supporto Lambda.
<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>
Se non si è ancora su EL 3.0, è necessario creare una funzione EL personalizzata. Per un esempio concreto, vedere 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);
}
che è registrato come
<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>
e da utilizzare come
<h:panelGroup ... rendered="#{func:contains(bean.panels, 'u1')}">
Questo non è disponibile in JSTL. C'è un fn:contains()
, ma funziona solo con i valori String
.
Semplicemente non utilizzare gli array se si vuole fare qualcosa di più che tenere semplicemente i dati. Utilizzare quindi le raccolte. – BalusC
beh, lo sto usando su un attributo di input, ma il metodo non viene chiamato: 'checked =" # {utils.contains (myBean.array, 'myBean.someIndicator')? 'Checked': ''} "' –
Ci sono errori EL? A proposito, il modo in cui usi 'checked' non è del tutto corretto. Una checkbox/radiobutton viene controllata quando è presente l'intero attributo, indipendentemente dal suo valore. In pratica, si desidera stampare il nome dell'attributo anziché il valore dell'attributo in modo condizionale. – BalusC