struts2:s:复选框与s:复选框不在同一行

时间:2008-12-31 04:27:49

标签: java struts2 rendering

这是.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。

5 个答案:

答案 0 :(得分:6)

添加属性theme =“simple” 喜欢

答案 1 :(得分:5)

Struts2将s:复选框呈现为表格单元格本身。原因是struts2使用模板系统进行标记渲染。默认值为(在struts-default.properties中定义)

标准UI主题

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>标记。