`
1028826685
  • 浏览: 940712 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

手工编写代码实现对action中所有方法输入校验

阅读更多
知识点:

通过重写validate() 方法实现, validate()方法会校验action中所有与execute方法签名相同的方法。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport ),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。
validate()使用例子:
public void validate() {
       if(this.mobile==null || "".equals(this.mobile.trim())){  this.addFieldError("username", "手机号不能为空");
        }else{  if(!Pattern.compile("^1[358]\\d{9}").matcher(this.mobile.trim()).matches()){
this.addFieldError(“mobile", "手机号的格式不正确"); }
       }
}

验证失败后,请求转发至input视图:
<result name="input">/WEB-INF/page/addUser.jsp</result>

在addUser.jsp页面中使用<s:fielderror/>显示失败信息。

注意Validate(){}会对这个Action中的所有方法进行验证。

照样看步骤:

第一步:新建类实现继承ActionSupport

public class HandValidates extends ActionSupport {

private String username;
private String mobile;


public String getUsername() {
return username;
}


public void setUsername(String username) {
this.username = username;
}


public String getMobile() {
return mobile;
}


public void setMobile(String mobile) {
this.mobile = mobile;
}

public String update(){
ActionContext.getContext().put("message", "更新成功");
return "message";
}

public String save(){
ActionContext.getContext().put("message", "保存成功");
return "message";
}

@Override
public void validate(){

if(this.username==null || "".equals(this.username.trim())){
this.addFieldError("username", "用户名不能为空");
}
if(this.mobile==null || "".equals(this.mobile.trim())){
this.addFieldError("mobile", "手机号不能为空");
}else{
if(!Pattern.compile("^1[358]\\d{9}$").matcher(this.mobile).matches()){
this.addFieldError("mobile", "手机号格式不正确");
}
}
}
}

第二步:配置stucts.xml文件

<action name="manage_*" class="com.liyong.HandValidates.HandValidates" method="{1}">
        <!-- 下面的input视图是当存在验证错误或提交参数是类型转换出错 -->
        <result name="input">/index.jsp</result>
        <result name="message">/WEB-INF/page/message.jsp</result>
        </action>
注意:上面的input视图是当验证出错或参数请求类型转换是出现异常都会自动转到input视图

第三步:编写input视图和message视图

index.jsp:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>输入校验</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
  </head>
  <body>
<!-- 以下标签是用来输出错误信息 -->
   <s:fielderror/>
   <form action="${pageContext.request.contextPath}/person/manage_save.action" method="post">
   用户名:<input type="text" name="username"/>不能为空<br/>
   手机号:<input type="text" name="mobile"/>不能为空,并且要符合手机号的格式1,3/5/8,后面是9个数字<br/>
   <input type="submit" value="提 交"/></form>
  </body>
</html>

message.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>结果</title>
   
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
  </head>
 
  <body>
    ${message}
  </body>
</html>

第四步:部署

第五步:可以更改表单提交的action方法名可以知道对action中的所有方法进行验证

.....

分享到:
评论

相关推荐

    Struts2.1.6实战课件精解_03

    ### Struts2.1.6实战课件精解之拦截器与输入校验 ...同时,你也应该能够有效地实现对Action中的输入数据进行校验,无论是对所有方法还是特定方法。这些技能对于开发健壮、安全的Web应用程序至关重要。

    Struts2.1学习笔记

    - **采用手工编写代码校验**: - **定义validate方法**:在Action类中定义`validate()`方法来进行校验逻辑。 - **定义input视图**:如果校验失败,可以指定返回一个特定的视图供用户修正错误。 - **用Struts2标签...

    JessMA Java Web 应用开发框架

    - **处理Ajax请求与手工输入校验**:文档应包含如何使用JessMA框架处理Ajax请求和进行手工输入校验的方法,这对于构建动态交互的Web应用程序至关重要。 ### 开发文档与技术支持 - **开发文档**:应该包含一份详尽...

    java ee应用技术知识要点.doc

    - 依赖注入可以通过手工装配(直接在代码中创建和关联对象)或自动装配(如Spring框架的@Autowired注解)来实现。 8. **AOP实现**: - JDK动态代理和CGLib动态代理是Spring AOP实现的基础,用于实现方法拦截。 9...

    jeecg-framework-3.1.0.RELEASE

    JEECG V3.0版本采用SpringMVC+Hibernate+UI快速开发库 的基础架构,采用面向声明的开发模式, 基于泛型编写极少代码即可实现复杂的数据展示、数据编辑、 表单处理等功能,再配合代码生成器的使用,将J2EE的开发效率...

    WEB UI框架的成熟引领新的开发模式 JEECG(J2EE Code Generation)

    JEECG还提供了一个可视化的代码生成器界面,开发者可以动态选择需要生成的文件(如Action、ServiceImpl、Jsp、Entity、Page)以及JSP模板风格(如行编辑、详细页编辑),并提供直观的代码生成和演示使用步骤,使得...

    超级有影响力霸气的Java面试题大全文档

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 13、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 14、...

    JEECG快速开发平台 v4.0

    2、采用面向声明的开发模式,基于泛型编写极少代码即可实现复杂的数据展示、数据编辑、表单处理等功能,再配合Online Coding在线开发与代码生成器的使用,将J2EE的开发效率提高8倍以上,可以将代码减少90%以上。...

    layui插件表单验证提交触发提交的例子

    这篇文章主要讲述了如何使用layui插件进行表单验证以及提交触发提交的实现方法。下面,我们将详细解析文章中涉及到的关键知识点。 ### 一、Layui框架介绍 Layui是一个前端UI框架,它提供了一套简单易用的界面元素...

    JEECG快速开发平台-其他

    Online Coding在线开发(通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义表单布局)技术点六:代码生成器,支持多种数据模型,根据表生成对应的Entity,Service,Dao,Action,JSP等,增删改...

    ZendFramework中文文档

    实现订制存储 3.1.4. 使用Zend_Auth 3.2. 数据库表认证 3.2.1. 简介 3.2.2. 高级使用:持久一个 DbTable 结果对象 3.2.3. 高级用法示例 3.3. 摘要式认证 3.3.1. 简介 3.3.2. 规范(Specifics) 3.3.3. ...

Global site tag (gtag.js) - Google Analytics