5

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

是我还是struts?TIA。

4

5 回答 5

6

添加属性 theme="simple" 喜欢

于 2009-02-11T10:30:29.347 回答
5

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

标准 UI 主题

struts.ui.theme=xhtml

struts.ui.templateDir=模板

struts.ui.templateSuffix=ftl

你需要做这个改变——struts.ui.theme:simple

可以通过添加来完成

常量名=“struts.ui.theme”值=“简单”/>标签

在“struts.xml”中。这就足够了。

于 2009-04-02T06:30:52.880 回答
3

您需要查看用于表单标签呈现的主题。Struts2 使用模板系统(在 struts.properties 中定义)。看起来您默认使用的是 xhtml 模板,该模板旨在输出一个两列表。您可以在应用程序中默认为简单或在标签级别(或介于两者之间的五个其他层次结构)覆盖它。

这里有更多信息:http ://struts.apache.org/2.0.14/docs/themes-and-templates.html

于 2008-12-31T06:31:50.773 回答
2

定义复选框时,使用“theme = simple”属性,如下所示:

“简单”主题会将您的复选框与您的其他字段放在同一行。干杯。

于 2009-06-02T21:28:44.587 回答
0

问题在于默认的struts 主题s:checkbox是一个表格单元格本身。(Struts 2 将其呈现为表格单元格)

在您的 jsp 中,您<td>再次将其包含在标签中(这不是必需的)

尝试删除<td>复选框标签周围的标签。

于 2009-01-30T14:48:08.073 回答