= Action类中ActionSupport使用以及validate方法重写实现。
= 属性文件messageResource.properties定义以及JSP页面上错误信息如何显示。
= 导航结果页面演示。
public class LoginAction extends ActionSupport { //校验方法,用来校验输入值为空或没有输入返回错误信息 public void validate() { if (getUsername() == null || getUsername().trim().equals("")) { //返回错误信息键值,user.required包含具体内容见messageResource.properties addFieldError("username", getText("user.required")); } if (getPassword() == null || getPassword().trim().equals("")) { //返回错误信息键值,pass.required包含具体内容见messageResource.properties addFieldError("password", getText("pass.required")); } } }
其中addFieldError方法和getText方法也是ActionSupport类的方法,只是Action子类是直接调用没有重写它们。addFieldError方法顾名思义就是对JSP页面上Form中某个需要校验的field,如果操作有错误时候如何进行错误信息处理的方法。比如“username”就是JSP页面上这个字段的名字,而“user.required”是错误信息属性文件里定义的
validate方法一般都是Action类执行execute方法之前执行,这样如果操作失败,就直接返回到struts.xml中定义的“input”指向的URL
#支持本地化的资源文件名定义 struts.custom.i18n.resources=messageResource
<%@ page language="java" pageEncoding="gb2312"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- struts2标签库调用声明 --> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>登录页面</title> </head> <body> <!-- form标签库定义,以及调用哪个Action声明 --> <s:form action="Login"> <table width="60%" height="76" border="0"> <!-- 各标签定义 --> <s:textfield name="username" label="用户名"/> <s:password name="password" label="密 码" /> <s:submit value="登录" align="center"/> </table> </s:form> </body> </html>
<%@ page language="java" contentType="text/html; charset=GB2312"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>登录成功</title> </head> <body> <!-- 取得session中用户名值 --> ${sessionScope.user},欢迎您~~ </body> </html>