2013-05-17 11 views
-1

J'ai une liste de rôles tels que Manager et User, qui doivent être affichés en tant qu'options de ma liste déroulante. Actuellement, je peux leur montrer en utilisant le code suivant, mais je ne sais pas comment avoir des index avec leurs noms. Actuellement, le nom des options et leurs index sont les mêmes.Comment remplir une liste déroulante avec une liste

Index Name 

    Manager Manager 

    User User 

mais devrait être

Index Name 

    1  Manager 

    2  User 

ma liste

public interface Options{ 
     public static final String[] POSITION = {"Manager", "User"}; 
     .... 

mon code pour utiliser la liste comme source de liste déroulante

<s:select name="Position" label="Positions" list="@[email protected]"/> 

Répondre

0

Vous pouvez utiliser un List<Object> plutôt qu'un String[], ou même un Map<Integer, String>:

public static final Map<Integer, String> POSITIONS = new HashMap<Integer, String>() { 
    { 
     put(1, "User"); 
     put(2, "Manager"); 
    } 
}; 

Et le .jsp juste:

<s:select name="Position" label="Positions" list="@[email protected]" /> 

Ce que vous mettez dans le Key du Entry va au ListKey en votre s:select, et ce que vous mettez dans le Value va au listValue.

Vous pouvez également avoir deux collections différentes et remplir le <s:select> en indiquant lequel va aux attributs ListKey et ListValue.

+0

J'ai utilisé votre réponse mais elle montre une erreur sur put ..... qui indique une déclaration de méthode invalide, le type de retour est requis. S'il vous plaît noter également que je vais avoir ce code dans mon interface. – J888

+0

Ensuite, vous pouvez utiliser le second choix: avoir deux tableaux différents: un 'String []' pour mettre dans le 'ListValue' de' select' et un 'Integer []' pour 'ListKey'. De toute évidence, vous devez les peupler dans le bon ordre. – Armaggedon

Questions connexes