在 Struts2 中验证真的比较容易,可以在 Action 中直接写 validate ,也可以使用 validate 框架进行验证,但是有个问题一直困扰了我,直到现在有个小程序要用到这个方面的知识,那就是验证后如何很好地人性化地在 jsp 页面中显示了。
大家都知道, Struts2 显示验证结果有一些方式,一般通过两种方式,介绍如下:
1. 在页面的上面或者某个位置全部显示错误。 代码:
< s:fielderror cssStyle = "color: red" ></ s:fielderror >
这样会显示所有的错误信息,模拟效果如下:
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 >
显示效果如下:
上面的差不多是 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 放到里面,目录结构如下:
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 包里面的文件。
来看看我们修改后的自定义显示错误信息吧,截图如下:
参考来源: http://blog.sina.com.cn/usc3l