2

我在我的 struts2 应用程序中使用 Metro CSS 主题。我正在使用带有 CSS 类的 html 标签,效果很好。但是在创建验证逻辑时,我发现它确实验证了表单但没有显示任何错误。

<form action="register.action" method ="post" validate="true">
 <div class="input-control text span3">
    <input type="text" name="username" placeholder="Enter User Name" value="" />
    <span class="helper"></span>
 </s:div> 
</form>

然后我切换到 struts2 html 标签,它开始显示错误,但现在我没有附加样式。我使用 struts2 html 标记的 cssClass 属性为表单和 div 标记提供样式,效果很好,但是在将<input type="text">标记更改为<s:textfield>附加到输入框的所有样式之后就消失了。

请建议我如何使用 struts 标签保留 CSS 样式。

4

2 回答 2

8

您可以使用标签cssClass的属性<s:textfield>并添加 CSS 样式来样式化您的表单。

<s:textfield cssClass="mytext" ... />

//css
.mytext {
}

这里值得注意的一点是 Struts2 标签默认使用xhtml主题。因此它会生成大量的 html 代码以及表单。您可能希望将默认主题更改为css_xhtml以应用您自己的样式,而不是使用 Struts2 默认。

在文件中添加以下内容struts.properties。struts.ui.theme = css_xhtml

参考:在 Struts 2 中覆盖默认主题

于 2012-12-15T15:52:00.857 回答
4

如果您已经拥有所有具有自己样式和元素的 JSP,请使用 Struts2simple主题。此主题不会创建其他元素,也不会显示验证错误。但是您可以使用fielderror标签来显示验证错误http://struts.apache.org/2.x/docs/fielderror.html。所以你的表格看起来像这样:

<form action="register.action" method ="post" validate="true">
  <div class="input-control text span3">
    <s:fielderror fieldName="username"/>
    <s:textfield name="username" placeholder="Enter User Name"/>
    <span class="helper"></span>
  </s:div>
</form>

您可以struts.xml使用struts.ui.theme常量为文件中的整个应用程序定义默认主题。

<constant name="struts.ui.theme" value="simple" />
于 2012-12-15T17:52:09.687 回答