struts2: s: case à cocher ne va pas sur la même ligne avec s: case à cocher
Question
Voici le code .jsp:
<table>
<s:iterator value="allAgents">
<tr>
<td><s:property value="firstName" /></td>
<td><s:property value="middleName" /></td>
<td><s:property value="lastName" /></td>
<td><s:checkbox name="ss"/></td>
</tr>
</s:iterator>
</table>
Une fois rendue, la case à cocher occuperait toute une ligne sous les "noms", centrée. Voici le code HTML généré pour ce qui est supposé être une seule ligne:
<tr>
<td>first</td>
<td>middle</td>
<td>last</td>
<td>
<tr>
<td valign="top" align="right"></td>
<td valign="top" align="left"><input type="checkbox" name="ss"
value="true" id="agent_ss" /> <input type="hidden"
name="__checkbox_ss" value="true" /></td>
</tr>
</td>
</tr>
Est-ce moi ou jambes de force? TIA.
La solution
Ajouter la propriété theme = " simple " comme
Autres conseils
Struts2 rend la case à cocher s: comme une cellule de tableau. Struts2 utilise un système de gabarit pour le rendu des balises. La valeur par défaut est (telle que définie dans struts-default.properties)
Thème de l'interface utilisateur standard
struts.ui.theme = xhtml
struts.ui.templateDir = template
struts.ui.templateSuffix = ftl
Vous devez effectuer ce changement - struts.ui.theme: simple
Cela peut être fait en ajoutant
nom constant = & "; struts.ui.theme &"; valeur = " simple " / > tag
dans le & "struts.xml &"; cela suffira.
Vous devez examiner le thème utilisé pour le rendu de vos balises de formulaire. Struts2 utilise un système de template (défini dans struts.properties). Il semble que vous utilisiez le modèle xhtml par défaut, conçu pour générer un tableau à deux colonnes. Vous pouvez choisir par défaut simple dans l'application ou la remplacer au niveau de la balise (ou cinq autres hiérarchies intermédiaires).
Voici quelques informations supplémentaires: http: // struts. apache.org/2.0.14/docs/themes-and-templates.html
Lorsque vous définissez votre case à cocher, utilisez " theme = simple " attribut comme indiqué ci-dessous:
Le " simple " thème mettra votre case à cocher dans la même ligne que les autres champs de votre. Cheers.
Le problème est que, avec le thème par défaut de struts, s:checkbox
est une cellule de tableau.
(Struts 2 le rend comme une cellule de tableau)
Dans votre jsp, vous l'incluez à nouveau dans <td>
balises (ce qui n'est pas nécessaire)
Essayez de supprimer les <=> balises situées autour de la balise de case à cocher.