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

手工编写代码实现对action指定方法输入校验

阅读更多
知识点:

通过validateXxx()方法实现, validateXxx()只会校验action中方法名为Xxx的方法。其中Xxx的第一个字母要大写。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport ),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。

validateXxx()方法使用例子:
public String add() throws Exception{  return "success";}
public void validateAdd(){
          if(username==null && "".equals(username.trim()))  this.addFieldError("username", "用户名不能为空");
}

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

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

实现步骤:编写action代码

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", "手机号格式不正确");
}
}
}
}

第二步:配置struts.xml文件

  <action name="validate_*" class="com.liyong.HandValidate.HandValidate" method="{1}">
        <!-- 下面的input视图是当存在验证错误或提交参数是类型转换出错 -->
        <result name="input">/index2.jsp</result>
        <result name="message">/WEB-INF/page/message.jsp</result>
        </action>

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

index2.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/validate_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>

messagse.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提交方法可以看到
提交表单如下:
   <form action="${pageContext.request.contextPath}/person/validate_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>
此时可以看到对update方法进行了验证
分享到:
评论

相关推荐

    Struts2.1学习笔记

    - **对指定方法校验**:可以为特定的方法定义校验规则,提高了校验的灵活性。 #### 国际化 - **准备资源文件**:创建`.properties`文件来存储不同语言的文字信息。 - **输出国际化信息**:使用Struts2提供的标签...

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

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

    JessMA Java Web 应用开发框架

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

    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、...

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

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

    JEECG快速开发平台 v4.0

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

    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