怎么自定义Struts2表单验证后的异常信息显示格式/样式

如何自定义Struts2表单验证后的错误信息显示格式/样式

 在Struts2中验证真的比较容易,可以在Action中直接写validate,也可以使用validate框架进行验证,但是有个问题一直困扰了我,直到现在有个小程序要用到这个方面的知识,那就是验证后如何很好地人性化地在jsp页面中显示了。

 

    大家都知道,Struts2显示验证结果有一些方式,一般通过两种方式,介绍如下:

 

1.在页面的上面或者某个位置全部显示错误。代码:

<s:fielderror cssStyle="color: red"></s:fielderror

这样会显示所有的错误信息,模拟效果如下:


怎么自定义Struts2表单验证后的异常信息显示格式/样式
 

2.在每个字段下面或上面显示,通过 

<s:fielderror cssStyle="color: red">

   <s:param>XXX(标签的name属性,比如username</s:param>

</s:fielderror>

例:名:

<input type="text" name="user.username" />

<s:fielderror cssStyle="color: red">

   <s:param>username</s:param>

</s:fielderror>

显示效果如下:


怎么自定义Struts2表单验证后的异常信息显示格式/样式
 

    上面的差不多是Struts默认显示的两种方式,但是我们常见的显示方式并不是这样的,所有我们需要自定义这种格式,我们的习惯是把错误信息显示在某个出错字段的后面,一行显示,而它给了一个小黑点并且换了行,我们现在就来解决这个问题。后面就是一步一步地进行,发现还真的解决了。这个时候也希望能够看看上面的文章。现提供我解决自定义错误显示方式的步骤。

 

1. 找到你的struts2-core-2.XXX.jar这个核心包,用软件解压;

2. \struts2-core-2. XXX\template\simple目录下找到fielderror.ftl(跟我们自定义格式非常有关系的文件);

3. 根据Struts2模板中提到的,把上面的fielderror.ftl放到WEB-INF/classes/template/simple目录下,这个我当时以为就在WEB-INF下新建一个classes的文件夹,后来提示已经存在,想想整个工程的结构发现,classes是放Java编译后的文件的,所有,这个时候的操作是在Src目录下新建一个template的文件夹,再在里面新建一个simple的文件夹(template/simple)(一定要注意建文件夹的步骤,是分两个文件夹建而不是建一个文件夹template.simple),把fielderror.ftl放到里面,目录结构如下:

 

怎么自定义Struts2表单验证后的异常信息显示格式/样式
 

4. 修改fielderror.ftl配置文件,这一步才是关键,如何修改了,实际上也很简单,就是把<ul></ul><li></li>标签删除(仅仅是删除标签而不删除标签里面的内容),简便的方法就是用记事本打开这个文件并用空格替换上面的每个标签(一个一个来哦)。后面我会提供我已经修改后的这个文件,如果大家不想修改的话就直接把我修改后的文件放到上面的目录即可。

5. 上面一步就是把错误信息显示前面的小黑点和换行都去掉了,是个关键步骤了,后面就来显示了,还是用上面的方式

 

<s:fielderror cssStyle="color: red">

   <s:param>XXX(标签的name属性,比如username</s:param>

</s:fielderror>

要不要加theme="simple"大家可以试试看,我没有加也是可以的,你还可以通过css来定义一下错误信息显示的字体啊,颜色啊等,这里不再叙述。

6.  整个步骤的原理就是Struts会加载一些配置文件,如果我们的classess里面没有的话会找到jar包里面的,如果有的话优先使用配置文件。我们这里的就是用我们修改的fielderror.ftl配置文件来覆盖jar包里面的文件。

 

来看看我们修改后的自定义显示错误信息吧,截图如下:


怎么自定义Struts2表单验证后的异常信息显示格式/样式