ActionForm前端错误处理:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.yourcompany.struts.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
public class LoginForm extends ActionForm {
private String passwd;
private String account;
//validate函数里面进行前端错误验证
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors=new ActionErrors();//错误集合,专门容纳ActionError,当内部有ActionError时,认为发生了前端错误
if(account.length()==0){//账号为空
ActionMessage error=new ActionMessage("error.null","account");//第一个参数是消息内容key,第二个参数是取代{0}的值,
errors.add("account",error);//第一个参数是对这个error加一个属性标记
}else if(account.length()>10||account.length()<6){//账号长度不对
ActionMessage error=new ActionMessage("error.leangth","account","6","10");//第一个参数是消息内容key,第二个参数是取代{0}的值,
errors.add("account",error);//第一个参数是对这个error加一个属性标记
}
if(passwd.length()==0){//密码为空
ActionMessage error=new ActionMessage("error.null","password");//第一个参数是消息内容key,第二个参数是取代{0}的值,
errors.add("passwd",error);//第一个参数是对这个error加一个属性标记
}else if(passwd.length()>10||passwd.length()<6){//账号长度不对
ActionMessage error=new ActionMessage("error.leangth","password","6","10");//第一个参数是消息内容key,第二个参数是取代{0}的值,
errors.add("passwd",error);//第一个参数是对这个error加一个属性标记
}
return errors;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}
public String getPasswd() {
return passwd;
}
/**
* Set the passwd.
* @param passwd The passwd to set
*/
public void setPasswd(String passwd) {
this.passwd = passwd;
}
/**
* Returns the account.
* @return String
*/
public String getAccount() {
return account;
}
/**
* Set the account.
* @param account The account to set
*/
public void setAccount(String account) {
this.account = account;
}
}
Action后端错误处理:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.yourcompany.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import com.yourcompany.struts.form.LoginForm;
/**
* MyEclipse Struts
* Creation date: 07-27-2017
*
* XDoclet definition:
* @struts.action path="/login" name="loginForm" input="/form/login.jsp" scope="request" validate="true"
*/
public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
String account=loginForm.getAccount();
System.out.println("得到登陆请求");
if(account.equals("JohnKate")){
System.out.println("得到名为JohnKate的人的登陆请求");
ActionMessages errors=new ActionMessages();//错误集合,专门容纳ActionError,当内部有ActionError时,认为发生了前端错误
ActionMessage error=new ActionMessage("error.login",account);
errors.add("Login",error);
//errors保存起来
this.saveErrors(request, errors);
return mapping.getInputForward();
}
return null;
}
}
jsp页面显示:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'Login1.jsp' starting page</title>
</head>
<body>
<html:form action="/login">
<bean:message key="info.input.account"/><html:text property="account" /><html:errors property="account"/><br>
<bean:message key="info.input.passwd"/><html:password property="passwd"/><html:errors property="passwd"/><br>
<html:submit/><html:cancel/>
</html:form><hr>
<html:errors property="Login"/>
</body>
</html>
资源文件:
# Resources for parameter 'com.yourcompany.struts.ApplicationResources'
# Project Prj7_1
#这是资源文件
info.input.account =Please inout account:
info.input.passwd =please input passwd:
#可以传参数,参数用{0}....{4}表示
info.input=<font color=red>Please input {0};</font>
error.null={0} cannot be null!
error.leangth=length of {0} must between {1} and {2}!
error.login={0} is in black list!!