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

 

    在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

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Struts2是一种基于Java EE的开源Web应用程序框架,用于构建J2EE应用程序。S2-020和S2-021是Struts2框架中的两个安全漏洞。 S2-020漏洞是由于在处理**参数拦截器(ParameterInterceptor)**时存在安全问题而引起的。攻击者可以通过构造恶意的请求,利用漏洞执行任意的命令或获得未经授权的访问权限。为了解决这个漏洞,Struts2的开发者发布了安全补丁,并建议用户及时升级到修复版本。 S2-021漏洞是由于**Cookie凭证拦截器(CookieInterceptor)**中存在安全缺陷导致的。攻击者可以通过特殊构造的Cookie请求来绕过权限验证,以管理员身份执行恶意操作。为了修复这个漏洞,Struts2的开发者发布了修复补丁,并建议用户尽快升级到修复版本。 对于开发者来说,了解并理解这些安全漏洞的工作原理非常重要。他们应该密切关注Struts2官方网站和邮件列表,及时了解当前版本的安全情况,并及时升级到修复版本。此外,开发者还应该在应用程序中实施必要的安全措施,如输入验证、输出编码和访问控制等,以防止其他潜在的安全漏洞。 对于系统管理员来说,他们应该密切关注Struts2的安全公告,并及时升级到修复版本,以确保应用程序的安全性。此外,他们还应该采取一些额外的安全措施,如配置防火墙、使用Web应用程序防火墙(WAF)和定期审查日志等,以进一步保护系统免受可能的攻击。 总而言之,了解并及时修复Struts2中的安全漏洞是保护应用程序和系统安全的重要步骤。开发者和系统管理员应该密切关注官方安全公告,并采取相应的措施来预防和修复潜在的风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值