这是.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>
渲染时,复选框将占据“名称”下方的整行,居中。 这是生成的html,它应该是一行:
<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>
是我还是支柱? TIA。
答案 0 :(得分:6)
添加属性theme =“simple” 喜欢
答案 1 :(得分:5)
Struts2将s:复选框呈现为表格单元格本身。原因是struts2使用模板系统进行标记渲染。默认值为(在struts-default.properties中定义)
struts.ui.theme = XHTML
struts.ui.templateDir =模板
struts.ui.templateSuffix = FTL
您需要进行此更改 - struts.ui.theme:simple
可以通过添加
来完成constant name =“struts.ui.theme”value =“simple”/&gt;标签
在“struts.xml”中。这样就足够了。
答案 2 :(得分:3)
您需要查看用于表单标记呈现的主题。 Struts2使用模板系统(在struts.properties中定义)。看起来您默认使用xhtml模板,该模板用于输出两列表。您可以在应用程序中默认为simple,也可以在标记级别(或其他五个层次结构)上覆盖它。
以下是一些信息:http://struts.apache.org/2.0.14/docs/themes-and-templates.html
答案 3 :(得分:2)
定义复选框时,请使用“theme = simple”属性,如下所示:
“简单”主题会将您的复选框放在与您的其他字段相同的行中。欢呼声。
答案 4 :(得分:0)
问题在于,使用默认的struts主题,s:checkbox
本身就是一个表格单元格。
(Struts 2将其呈现为表格单元格)
在你的jsp中,你再次将它包含在<td>
标签中(不需要)
尝试删除复选框标记周围的<td>
标记。