为什么我的actionErrors和fieldErrors显示括号[]?

时间:2017-07-06 12:06:02

标签: jsp struts2

一旦页面在我的Struts 2应用程序中捕获了错误,错误就会从我的资源包中正确显示,但是它们总是会显示大括号[]例如

[first name must not be empty]

这些通过标签显示

<s:actionerror />

<s:iterator value="fieldErrors">
   <s:property value="value" />
</s:iterator>

这些来自Action-validation.xml并通过验证方法设置addFieldError()

这与我的主题设置为simple有关吗?我无法通过其他帖子在文档或任何内容中看到任何内容......

2 个答案:

答案 0 :(得分:1)

为什么

不,这与主题无关。看看prepareForSegue方法。它返回map,其中value是一个字符串列表。

getFieldErrors

您的代码在地图上迭代,public Map<String, List<String>> getFieldErrors() { return validationAware.getFieldErrors(); } 是一个列表。列表字符串将与周围的括号一起显示。

如何

如果您只需要错误消息的值而不是密钥,那么您可以改用value方法并迭代addActionError

如果你想迭代actionErrors那么你就可以这样做。

fieldErrors

当然还有用于显示错误/消息的标签,请参阅Non-Form UI Tags

答案 1 :(得分:0)

如果没有默认的xhtml主题,它会在对象打印toString()时渲染对象,即用括号格式化数组。

  

如果存在特定的布局,则渲染字段错误   渲染取决于主题本身。空(空或空字符串)   错误将不会打印。字段错误字符串将是html   默认情况下已转义。

显示错误的代码应该是

<s:if test="hasFieldErrors()">
   <div class="errors">
      <s:fielderror />
   </div>
</s:if>