Je dois cacher un élément si certaines valeurs sont présentes dans le JSP
Les valeurs sont stockées dans une liste, j’ai donc essayé:
style='display:none;'
Mais ça ne marche pas.
Comment puis-je évaluer si une liste contient une valeur dans JSTL, la liste et les valeurs sont des chaînes.
Malheureusement, je pense que JSTL ne supporte rien mais une itération à travers tous les éléments pour comprendre cela. Dans le passé, j’ai utilisé la méthode forEach dans la bibliothèque de balises principale:
Après cette exécution, $ {contains} sera égal à “true” si myList contenait myValue.
il n’y a pas de fonctionnalité intégrée pour vérifier cela – ce que vous feriez, c’est écrire votre propre fonction tld qui prend une liste et un élément, et appelle la méthode contains () de la liste. par exemple
//in your own WEB-INF/custom-functions.tld file add this 1.0 contains com.Yourclass boolean contains(java.util.List,java.lang.Object)
Créez ensuite une classe appelée Yourclass et ajoutez une méthode statique appelée contains avec la signature ci-dessus. Je suis sûr que la mise en œuvre de cette méthode est assez explicite:
package com; // just to illustrate how to represent the package in the tld public class Yourclass { public static boolean contains(List list, Object o) { return list.contains(o); } }
Ensuite, vous pouvez l’utiliser dans votre jsp:
<%@ taglib uri="/WEB-INF/custom-functions.tld" prefix="fn" %> style='display:none;'
La balise peut être utilisée depuis n’importe quel JSP du site.
edit: plus d’infos sur le fichier tld – plus d’infos ici
Une autre façon de procéder consiste à utiliser un Map (HashMap)
avec des paires Key, Value représentant votre object.
Map map = new HashMap(); map.put(new Long(1), "one"); map.put(new Long(2), "two");
Dans JSTL
Cela devrait retourner vrai si la paire existe dans la carte