Comment faire Struts radio balise de créer une liste verticale de boutons radio
Je suis struts à l'aide d'un radio-étiquette qui est rempli avec une liste d'objets qui ont deux domaines:
class MyAction {
List<MyObject> myList;
String selectedId
public String execute() {
...
myList = new ArrayList<MyObject>();
myList.add(new MyObject("1","first object");
myList.add(new MyObject("2","second object");
myList.add(new MyObject("3","second object");
...
}
//Getters and Setters for myList & selectedId
...
}
class MyObject {
String id;
String name;
MyObject(String id, String name) {
this.id = id;
this.name = name;
}
//Getters and Setters for id & name
...
}
Voici ce que j'utilisais sur ma page pour afficher la liste de boutons radio
<s:radio key="selectedId" list="myList" listKey="id" listValue="name"/>
Cependant, cela donne une liste horizontale de boutons radio. J'ai essayé d'ajouter un style css à eux:
<style>
.vertical input { display: block; }
</style>
Mais cela provoque les étiquettes et les boutons de la radio sur des lignes séparées ainsi, au lieu de le radio bouton et étiquette sur la même ligne:
premier objet
deuxième objet
troisième objet
ce que je veux est:
premier objet deuxième objet troisième objet
Vous devez vous connecter pour publier un commentaire.
sa en fait simple, je veux dire, utiliser le thème
simple
🙂Cela fera
name
comme une étiquette etid
comme la propriété de soumettreaprès quelques recherches sur google un peu partout... j'ai trouvé quelques solutions:
Modifier étendre le thème et modifier les entretoises FTL pour les boutons radio: Les Instructions ici. Cela semble exagéré pour moi - ou, au moins, je suis trop paresseux pour ça 🙂
Utiliser un itérateur tag, itérer sur chaque élément de la liste, et la sortie d'un bouton radio et de saut de ligne pour chaque élément de la liste. La réponse est venue de ici
J'ai choisi l'option de deux (parce que je suis paresseux principalement), bien que la première option serait un bon exercice.
Voici ce que mes jambes de suspension balise ressemble à ça:
Si l'itérateur fonctionne sur une Liste, si vous définissez l'attribut de liste de la radio-étiquette à une liste ne contenant que le courant myObject. Le listKey et listValue sont ensuite myObject.id et myObject.nom
J'ai une solution simple. Dans la liste, ajoutez
<br>
pour chaque élément, par exemple,Il fonctionne bien ressemble à un hack.
Vous pourriez tout aussi bien utiliser une carte dans le code Java. Qui aura aussi l'avantage de se débarrasser de la
MyObject
classe. Quelque chose comme: