验证表单返回错误信息

一:利用requst返回错误提示

在Action类中操作requst对象(另附文介绍),然后按Servlet方式处理。具体代码如下:

struts.xml
	
		
		regex:.*

		
			/success.jsp
			/user_login.jsp
		

	

Action
	private static Logger log = Logger.getLogger(User.class);
	private UserBean user = new UserBean();// 手动实例化

	@Override
	public UserBean getModel() {
		// TODO Auto-generated method stub
		return user;
	}

	public String check() {
		HttpServletRequest request = ServletActionContext.getRequest();
		if (!"admin".equals(user.getUseName())) {
			request.setAttribute("usererror", "用户名不正确");
			return INPUT;
		} else if (!"123".equals(user.getPassword())) {
			request.setAttribute("pwerror", "密码不正确");
			return INPUT;
		}
		return SUCCESS;
	}
JSP
	
用户名:${usererror}
密码:${pwerror}
访问执行如下路径:http://localhost:8080/StrutsText/user_login.jsp并提交数据
验证表单返回错误信息_第1张图片
运行结果:
验证表单返回错误信息_第2张图片

测试成功。
当然上述事例中,如果requst对象在多个类或多个地方使用,可以构建一个Action基类,利用该基类获取requst的常用对象,实际使用的Action去继承上述基类。代码修改如下:
Action基类
public class BasicAction extends ActionSupport{
	public 	HttpServletRequest request;
	public HttpServletResponse response; 
	public HttpSession session;
	public ServletContext application;
	public BasicAction() {
		// TODO Auto-generated constructor stub
		request = ServletActionContext.getRequest();
		response=ServletActionContext.getResponse(); 
		session =request.getSession();
		application=request.getServletContext();
		//.........	
	}

}
Action修改为:
public class User extends BasicAction implements ModelDriven {
	private static Logger log = Logger.getLogger(User.class);
	private UserBean user = new UserBean();// 手动实例化

	@Override
	public UserBean getModel() {
		// TODO Auto-generated method stub
		return user;
	}

	public String check() {
		if (!"admin".equals(user.getUseName())) {
			this.request.setAttribute("usererror", "用户名不正确");
			return INPUT;
		} else if (!"123".equals(user.getPassword())) {
			this.request.setAttribute("pwerror", "密码不正确");
			return INPUT;
		}
		return SUCCESS;
	}

}

二:利用struts返回错误提示

除了上述使用request方法外,还可以使用struts返回错误提示,具体代码如下:
Action修改为:
	private static Logger log = Logger.getLogger(User.class);
	private UserBean user = new UserBean();// 手动实例化

	@Override
	public UserBean getModel() {
		// TODO Auto-generated method stub
		return user;
	}

	public String check() {
		if(!"admin".equals(user.getUseName())){
			this.addFieldError("userName", "用户名不正确!");
			return INPUT;
		}else if(!"123".equals(user.getPassword())){
			this.addFieldError("passWord","密码不正确!");
			return INPUT;
		}
		return SUCCESS;
	}
jsp代码修改如下:
因为需要使用struts标签,所以需要在jsp引入struts标签库
 <%@ taglib prefix="s" uri="/struts-tags"%>
	
用户名:
密码:
userName passWord
访问执行如下路径:http://localhost:8080/StrutsText/user_login.jsp并提交数据
验证表单返回错误信息_第3张图片




运行结果为:
验证表单返回错误信息_第4张图片
测试成功!
因为其返回值都为系统默认返回值,可以调用validate方法,改进Action代码
Action代码修改如下:
	private static Logger log = Logger.getLogger(User.class);
	private UserBean user = new UserBean();// 手动实例化

	@Override
	public UserBean getModel() {
		// TODO Auto-generated method stub
		return user;
	}

	public String check() {
		return SUCCESS;
	}

	@Override
	public void validate() {
		// TODO Auto-generated method stub
		if (!"admin".equals(user.getUseName())) {
			this.addFieldError("userName", "用户名不正确!");
		} else if (!"123".equals(user.getPassword())) {
			this.addFieldError("passWord", "密码不正确!");
		}
	}
访问执行如下路径:http://localhost:8080/StrutsText/user_login.jsp并提交数据
验证表单返回错误信息_第5张图片

运行结果:
验证表单返回错误信息_第6张图片
测试成功!

你可能感兴趣的:(框架,------Struts2)