如何自定义<s:fielderror>标签的输出?</s:fielderror>

时间:2012-12-06 01:49:04

标签: java struts2 struts

如何使用struts2验证获取我设置的验证消息:

public void validate() {
    addFieldError("user", "Invalid User");
}

我想从自定义tagLib中获取“无效用户”和“用户”字符串,以便打印如下:

public int doStartTag() {
    pageContext.getOut().print( "Invalid User - user" )
}

更新: 这个例子是一个简化和非功能的用法,只是解释了我希望如何返回值,而不是我将如何使用它,但这是用例:

我想创建一个自定义tagLib,它从struts验证中输出错误。在单个tagLib中,我想验证页面是否包含给定输入的验证错误,然后在屏幕上打印错误内容。

Scriptlet,&lt; logic:*,javascript - &gt;这一切都是不可能的。

如果jsp意图保存文档的结构,那么具有内部特定规则的taglib比使用逻辑比较充斥页面更有意义。

我没有使用<s:fieldError />(或那样的smth),因为它创建了一个我无法摆脱的ulli结构,甚至将默认模板设置为“简单”< / p>

1 个答案:

答案 0 :(得分:0)

Aleksandr M是对的。如果您只想更改标记吐出的标记,您绝对不想创建标记,您只想覆盖渲染它的模板。这很容易。您将从struts核心jar获取该模板的副本,对其进行编辑,并将其放入您的项目中。这是文档的链接:

http://struts.apache.org/2.3.4.1/docs/template-loading.html

注意,根据您的目的,您可以自己获取错误消息。它们都作为ActionSupport上的JavaBeans属性公开,您的操作应该继承这些属性,并且您可以使用OGNL表达式(例如属性标记)来访问它们。

注意,ActionSupport实现这些以完成它实现的ValidationAware接口的合同。