struts的两种校验方式

来源:互联网 发布:vscode 编译提示 编辑:程序博客网 时间:2024/05/17 14:26

struts校验页面的输入是否符合要求有两种方式,每种方式又分为全局验证和局部验证两种。

第一种:在Action类中重写方法。

在action类中实现全局验证的步骤:

1、action类继承ActionSupport类。

2、重写validate方法,实现验证规则。

/*//全局验证,不通过跳转到input
@Override
public void validate() 
{
if (user.getUsername().equals(""))
{
this.addFieldError("msg", "用户名不能为空");
}
else if (user.getUsername().length() < 6)
{
this.addFieldError("msg", "用户名长度不能小于6");
}

if (user.getPassword().equals(""))
{
this.addFieldError("msg", "密码不能为空");
}
}
*/

3、在核心文件struts.xml中配置input字符串与视图的映射(input字符串为不通过验证时返回的字符串)

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<package name="default" namespace="/" extends="struts-default" >
<action name="userAction_*" class="com.caokaiyuan.action.UserAction" method="{1}">
<result name="register">success.jsp</result>
<result name="login">success.jsp</result>

<!-- 配置input字符串与视图的映射 -->
<result name="input">{1}.jsp</result>
</action>
</package>
</struts>


局部验证的步骤基本如全局验证,不同的是在局部验证时不是重写validate方法。而且局部验证的方法也要遵循一定的命名规制。

命名规制:validate + 要验证的方法名,方法名首字母大写

如下代码:只对userAction_login的请求时验证

package com.caokaiyuan.action;


import com.caokaiyuan.vo.UserVO;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;


public class UserAction extends ActionSupport implements ModelDriven<UserVO>
{
private static final long serialVersionUID = 1L;

private UserVO user = new UserVO();

public String register() throws Exception 
{
return "register";
}
public String login() throws Exception
{
return "login";
}

/*//全局验证,不通过跳转到input
@Override
public void validate() 
{
if (user.getUsername().equals(""))
{
this.addFieldError("msg", "用户名不能为空");
}
else if (user.getUsername().length() < 6)
{
this.addFieldError("msg", "用户名长度不能小于6");
}

if (user.getPassword().equals(""))
{
this.addFieldError("msg", "密码不能为空");
}
}
*/

//局部验证
public void validateLogin()
{
if (user.getUsername().equals(""))
{
this.addFieldError("msg", "用户名不能为空");
}
else if (user.getUsername().length() < 6)
{
this.addFieldError("msg", "用户名长度不能小于6");
}
}

public UserVO getUser() {
return user;
}


public void setUser(UserVO user) {
this.user = user;
}


@Override
public UserVO getModel()
{
return user;
}


}

第二种:在xml文件中配置验证规则。

在xml文件中配置全局验证的步骤

1、在action的包下面建立action名称+validation的xml文件如(UserAction-validation.xml)

2、在action包下的xml文件进行验证规制(如在UserAction-validation.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
  "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
  "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
  <validators>
  <!-- 配置校验规则,用户名非空验证 -->
  <validator type="requiredstring">
  <!-- 要验证的字段 -->
  <param name="fieldName">username</param>
  <!-- 不通过是的返回值 -->
  <message>用户名不为空!!</message>
  </validator>
  </validators>
 

3、、在核心文件struts.xml中配置input字符串与视图的映射(input字符串为不通过验证时返回的字符串)


局部验证的步骤只要把全局验证的xml文件的名称按一定的规制修改一下即可。

如把上面的UserAction-validation.xml修改为UserAction-userAction_login-validation.xml。

命名规制:action名称+ -要验证的请求的名称+ -validation

0 0