前面写过如何自定义Struts2表单验证后的错误信息显示格式/样式,文章,收到了几位好友的一些意见和支持感到很开心,现在网上类似问题的解决文章已经很多了,今天在这里,也仅是整理和学习,其中也算有一种新的方法来分享给大家。 ### 如何自定义Struts2表单验证后的错误信息显示格式/样式 #### 环境配置 本文档基于以下技术栈来进行示例说明: - **框架版本**:Struts2.1.8.1 - **开发工具**:MyEclipse8.6 - **服务器**:Tomcat7.0.2 #### 前提条件 在深入讨论自定义错误信息显示格式之前,确保已经搭建好了Struts2的Web项目。这一步对于熟悉Struts2的开发者来说应该非常简单。 #### 创建Action类 为了演示错误信息的处理过程,我们需要创建一个Action类来模拟产生错误的情况。下面是一个简单的示例: ```java public class DisplayErrorInfoAction extends ActionSupport { private static final long serialVersionUID = -2690064846056775963L; @Override public String execute() throws Exception { // 添加一些FieldError供测试,如果需要请自写validate方法 this.addFieldError("displayErrorInfo", "error! Please check it."); this.addFieldError("user.username", "名字有错误啦"); return INPUT; } } ``` #### 方案一:使用OGNL获取值栈内容 **核心思想**:通过OGNL (Object-Graph Navigation Language) 获取`ValueStack`中的`errors`和`fieldErrors`的值。OGNL是一种强大的表达式语言,用于获取和设置Java对象的属性。 **标签介绍**:`s:debug`标签主要用于辅助测试,可以在页面上生成一个超链接,通过点击此链接可以查看`ValueStack`和`StackContext`中的所有值信息。 **示例代码**: ```html <body> <s:form action="displayErrorInfo" method="post" theme="simple"> <h1 align="center" style="color: blue"> Display Error Info for Struts2 Demo 1 (使用OGNL拿值栈的内容,推荐使用) </h1> <h2 dir="rtl"> 顺利整理 </h2> <hr> <hr> 1.1. All Error Infos (Map): <s:property value="errors"/><br> 1.2. All field Errors Infos (Map): <s:property value="fieldErrors"/><br> <hr> 2.1. Display Error Info in errors (errors.displayErrorInfo[0]):<s:textfield/> <font color="red"><s:property value="errors.displayErrorInfo[0]"/></font><br> 2.2. Display Error Info in errors (errors['displayErrorInfo'][0]):<s:textfield/> <font color="red"><s:property value="errors['displayErrorInfo'][0]"/></font><br> <font color="green">注:拿到值后,就可以按照自己的格式进行自定义显示了</font><br> 2.3. Display Error Info in errors (一般不会使用到[1], 这里仅是测试):<s:textfield/> <font color="red"><s:property value="errors.displayErrorInfo[1]"/></font><br> <hr> 3.1. Display Error Info in fieldErrors (fieldErrors.displayErrorInfo[0]): <s:textfield/> <font color="red"><s:property value="fieldErrors.displayErrorInfo[0]"/></font><br> ... ``` #### 重点解析 1. **使用`s:property`标签获取错误信息**:如上面示例所示,我们可以利用`s:property`标签结合OGNL表达式来获取`ValueStack`中的错误信息。例如,`<s:property value="errors.displayErrorInfo[0]"/>`和`<s:property value="errors['displayErrorInfo'][0]"/>`都可以用来获取特定字段的错误信息。 2. **处理含有`.`的错误键**:当错误键包含`.`时,如`user.username`,可以使用`<s:property value="errors['user.username'][0]"/>`或`<s:property value="fieldErrors['user.username'][0]"/>`来正确获取对应的错误信息。 3. **自定义错误信息的显示格式**:通过以上方法获取到错误信息之后,可以根据需求对这些信息进行格式化处理。比如,可以改变字体颜色、大小、背景色等,甚至使用JavaScript动态调整显示方式,从而达到美观且易于用户理解的效果。 #### 总结 通过上述方案,我们可以实现对Struts2表单验证后错误信息的自定义显示格式。这对于提高用户体验、使应用程序更加友好和专业至关重要。此外,这种方法还提高了开发效率,简化了错误处理逻辑,让开发者能够更专注于业务逻辑的实现。
- 粉丝: 18
- 资源: 36
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- GigaDevice.GD32F4xx-DFP.2.1.0 器件安装包
- 智慧校园数字孪生,三维可视化
- 多种土地使用类型图像分类数据集【已标注,约30,000张数据】
- 3.0(1).docx
- 国产文本编辑器:EverEdit用户手册 1.1.0
- 多边形框架物体检测27-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 基于stm32风速风向测量仪V2.0
- 高效排序算法:快速排序Java与Python实现详解
- Metropolis-Hastings算法和吉布斯采样(Gibbs sampling)算法Python代码实现
- IP网络的仿真及实验.doc