Struts2 Validate

1.自定义action继承ActionSupport

2.复写validate方法,因为ActionSupport实现了Validate这个借口,而这个借口中定义了validate方法

3.当请求时,先执行validate这个方法,然后再执行自己请求的方法

添加:<%@ taglib uri="/struts-tags" prefix="s" %>     引入struts2标签库

请求url

   		 <s:form action="validate/validateAction_testValidate.action" method="post">
   		 	<s:textfield name="username" label="用户名"></s:textfield>
   		 	<s:password name="password" label="密码"></s:password>
   		 	<s:submit></s:submit>
   		 </s:form>

struts.xml中配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>  
	<package name="validate" namespace="/validate" extends="struts-default">
		<action name="validateAction_*" class="com.struts2.validate.ValidateAction" method="{1}">
			<result>success.jsp</result>
			<result name="input">login.jsp</result>
		</action>
	</package>  
</struts>  

  

Action中的配置

package com.struts2.validate;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

//印证
public class ValidateAction extends ActionSupport {
	public String testValidate(){
		System.out.println("success");
		return SUCCESS;
	}
	
	//这个方法是执行印证的,如果验证有错误,则和配置文件result的name的值为input,这个是固定的
	//addFiledError中的第一个参数与页面上的name的值保持一致
	//struts2标签会把验证信息输出
	public void validate(){
		String username = ServletActionContext.getRequest().getParameter("username");
		String password = ServletActionContext.getRequest().getParameter("password");
		
		System.out.println(username+"---"+password);
		
		if("".equals(username))
			this.addFieldError("username", "用户名不能为空");//与输入的name值一样
		if("".equals(password)){
			this.addFieldError("password", "密码不能为空");//与输入的name值一样
		}
	}
}

  

原文地址:https://www.cnblogs.com/callyblog/p/7517582.html