我目前正在为我的表单使用Struts2标记,并显示其错误消息。我的问题是,在Struts2标签中显示错误消息的默认标记是<ul>
标签的使用。无论如何我可以改变这个吗?我希望错误消息显示为<span>
而非列表。
我将如何实现这一目标?
答案 0 :(得分:3)
标签根据主题进行渲染。然后问题变为:你如何改变主题?您可以为标签更改它 (将标签上的主题属性设置为简单),页面,请求或一般情况下。
http://struts.apache.org/2.2.1/docs/struts-2-themes.html
我个人喜欢写html,也就是说我不喜欢struts2默认主题的任何“帮助”。所以在我的struts.xml中我只使用:
<constant name="struts.ui.theme" value="simple" />
Web开发人员应该知道HTML。
<强>更新强>:
一般使用YUI reset.css所以我可能错过了这个......
如果在操作上扩展ActionSupport,则会有getFieldErrors()
方法,因此您可以使用<s:property value='fieldError["field_name"]'/>
来返回关联的错误消息字符串,当然不需要任何格式化。
它的可读性并不比<s:fielderror/>
标签差得多......毕竟我们总是需要使用属性标签。
答案 1 :(得分:3)
您可以覆盖用于渲染错误的模板文件。将actionerror.ftl
主题中的fielderror.ftl
和simple
文件从struts2-core
jar复制到您的应用程序,并修改它们,不要使用ul
/ li
标记。
答案 2 :(得分:3)
另一个选择是更改UL元素的CSS。
这种方法只有在你特别关心外观时才有效,而不是DOM本身。
答案 3 :(得分:3)
我遇到了同样的问题,我使用以下代码来解决我的问题
<s:if test="fieldErrors.get('email').size() > 0">
<s:property value="fieldErrors.get('email').get(0)"/>
</s:if>
电子邮件是我的字段的名称。这样我们就不必修改CSS了。
答案 4 :(得分:-1)
这是一个教程,展示了Struts 2的ActionError和ActionMessage类的使用。
http://www.mkyong.com/struts2/struts-2-actionerror-actionmessage-example/
ActionError - 用于向用户发送错误反馈消息 - 通过&lt;显示s:actionerror /&gt;
<s:if test="hasActionErrors()">
<div class="errors">
<s:actionerror/>
</div>
</s:if>
ActionMessage - 用于向用户发送信息反馈消息,通过&lt;显示s:actionmessage /&gt;
<s:if test="hasActionMessages()">
<div class="welcome">
<s:actionmessage/>
</div>
</s:if>