2009-09-25 8 views
0

J'ai un modèle avec cette méthode:Utilisez la méthode de l'objet dans une page jstl

public List<String> getPriviledgeNames() 

Je suis en train d'afficher une liste de case à cocher dans ma page jstl, et je voudrais vérifier que les dont le nom figure dans la liste renvoyée par mon modèle. J'ai donc quelque chose comme:

<li> 
    <input type="checkbox" name ="priviledge" id="CheckBox2" class="checkbox" value="clickthrough" /> 
    <label for="CheckBox2">Clickthrough</label> 
</li> 
<li> 
    <input type="checkbox" name ="priviledge" id="CheckBox3" class="checkbox" value="details" /> 
    <label for="CheckBox3">Details</label> 
</li> 

Je voudrais ajouter checked = « checked » que leur nom figure dans la liste fournie par la méthode de mon modèle. Existe-t-il un moyen de le faire SANS utiliser le scriptlet? Je ne voudrais pas avoir de code Java dans mes pages ...

Merci pour toute aide! Roberto

+0

ce que je pense que vous want est définitivement réalisable, mais je suis confus à propos de la question - quel est le 'leur' ​​auquel vous faites référence dans 'Je voudrais ajouter le check =" vérifié "seulement leur nom est dans la liste fournie par la méthode de mon modèle. ? – Chii

+0

Désolé je voulais dire seulement si leur valeur est dans la liste, comme "clickthrough" ou "détails"! – Roberto

Répondre

0
<c:when test = "${fn:contains(list,value)}"> 

-selon la documentation, il est en train de faire une comparaison chaîne/chaîne, je suppose qu'il est en fait vérifier si la valeur de chaîne est une sous-chaîne de list.toString().

Vous pouvez également effectuer un test manuel sur chaque valeur de la liste avec une balise forEach, mais ce serait plus compliqué.

+0

oui la boucle sera un gâchis, je vais certainement essayer cette solution. Je n'ai pas essayé car je ne pensais pas à la méthode toString() à appeler. – Roberto

0

En utilisant une carte au lieu d'une liste pourrait faire quelque chose comme ceci:

<c:if test="${yourModel.priviledgeNames['clickthrough'] ne null}"> 
checked="checked"</c:if> 

Ou ceci: ${yourModel.priviledgeNames['clickthrough']} en traçant votre nom de case à cocher checked = « checked »

Questions connexes