我目前正在为我的表单使用 Struts2 标记,并显示它的错误消息。我的问题是在 Struts2 标签中显示错误消息的默认标记是标签的使用<ul>
。无论如何我可以改变这个吗?我希望错误消息显示为<span>
不是列表。
我将如何实现这一目标?
标签根据其主题呈现。然后问题变成:你如何改变主题?您可以为标签(将标签上的主题属性设置为简单)、页面、请求或一般更改它。
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/>
标签差多少……毕竟我们需要一直使用属性标签。
您可以覆盖用于呈现错误的模板文件。将主题中的文件actionerror.ftl
和fielderror.ftl
文件从jar 复制到您的应用程序并修改它们以不使用/标记。simple
struts2-core
ul
li
另一种选择是更改 UL 元素的 CSS。
这种方法只有在你特别关心外观而不是 DOM 本身的情况下才有效。
我遇到了同样的问题,我使用以下代码解决了我的问题
<s:if test="fieldErrors.get('email').size() > 0">
<s:property value="fieldErrors.get('email').get(0)"/>
</s:if>
电子邮件是我的领域的名称。这样我们就不必修改 CSS。
这里有一个教程来展示 Struts 2 的 ActionError 和 ActionMessage 类的使用。
http://www.mkyong.com/struts2/struts-2-actionerror-actionmessage-example/
ActionError - 用于向用户发送错误反馈消息 - 通过 <s:actionerror/ > 显示
<s:if test="hasActionErrors()">
<div class="errors">
<s:actionerror/>
</div>
</s:if>
ActionMessage – 用于向用户发送信息反馈消息,通过< s:actionmessage/ >显示
<s:if test="hasActionMessages()">
<div class="welcome">
<s:actionmessage/>
</div>
</s:if>