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值一样 } } }
时间: 2024-11-03 03:47:52