struts2: s: Checkbox gehen nicht auf der gleichen Zeile mit s: Checkbox
Frage
Hier ist der .jsp Code:
<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>
Beim Rendern würde das Kontrollkästchen eine ganze Reihe unter dem Namen 'besetzen, zentriert. Hier sind die generierten HTML für das, was angenommen hat, eine einzelne Zeile sein:
<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>
Ist es mir oder Streben? TIA.
Lösung
Fügen Sie die Eigenschaft theme = "einfache" wie
Andere Tipps
Struts2 macht s: Checkbox als Tabellenzelle itself.The Grund ist tht struts2 verwendet ein Template-System für Tag-Rendering. Die Standardeinstellung ist (wie in struts-default.properties definiert)
Standard UI Thema
struts.ui.theme = xhtml
struts.ui.templateDir = template
struts.ui.templateSuffix = FTL
Sie müssen diese Änderung vorzunehmen - struts.ui.theme: simple
Es kann durch das Hinzufügen
erfolgenKonstante name = "struts.ui.theme" value = "einfacher" /> Tag
in der "struts.xml" .Dieses wil genügen.
Sie müssen in das Thema suchen, die für das Formular-Tag-Rendering verwendet wird. Struts2 verwendet ein Template-System (in struts.properties definiert). Es sieht aus wie Sie die xhtml Vorlage standardmäßig verwenden, die für die Ausgabe einer zweispaltige Tabelle ausgelegt ist. Sie können in der App auf einfachen Standard oder auf der Tag-Ebene außer Kraft setzen (oder fünf anderen Hierarchien dazwischen).
Hier einige weitere Informationen: http: // Streben. apache.org/2.0.14/docs/themes-and-templates.html
Wenn Sie Ihre Kontrollkästchen definieren, verwenden Sie „theme = einfaches“ Attribut wie im folgenden dargestellt:
Das „einfache“ Thema wird Ihre Checkbox in der gleichen Zeile wie die anderen Felder Ihrer setzen. Prost.
Das Problem ist, dass mit dem Standard Streben Thema, s:checkbox
eine Tabellenzelle selbst ist.
(Struts 2 macht es als eine Tabellenzelle)
In Ihrem jsp schließen Sie es in <td>
Tags wieder (was nicht benötigt wird)
Versuchen Sie, die <td>
-Tags um das Kontrollkästchen Tag zu entfernen.