添加struts标签库<%@ taglib prefix="s" uri="/struts-tags" %>
验证表单,input自动返回,validate验证方法
1、配置XML
<action name="login" method="login" class="com.action.LoginAction"> <result>/index.jsp</result> <result name="input">/login.jsp</result> </action>
2、在方法里使用return INPUT 或者重写validate方法
if(user.getUsername()==null||user.getUsername().equals("")){ this.addFieldError("username","用户名不能为空"); return INPUT; }
@Override public void validate() { if(user.getUsername()==null){ this.addFieldError("username","用户名不能为空"); } }
自动调用input的情况:1参数类型转换错误
2addFieldError()函数在validate()方法中调用
处理结果类型(com.opensymphony.xwork2.Action)
INPUT:Action的执行,需要从前端界面获取参数,一般在应用中,会对这些参数进行验证,如果验证没有通过,将自动返回到该视图。
自动跳转到input界面方式:
1、传入的参数类型转换错误,自动跳转INPUT界面(int——>String)
举例:前端输入的数据被赋值给实体类时类型不一致。
2、校验时,调用的this.addFieldError(fieldName,errorMessage)它是添加表单的错误,这里面有值,如果被执行,代表校验不通过,也会自动跳转INPUT界。
如果不想手动返回INPUT,则要把代码写在validate()方法里。
user.getUsername()==null和"".equals(user.getUsername())这两个条件判断的区别?
因为未经第一个判断直接进行第二个判断,当用户名为null时会发生空指针异常
第一个判断用户名是否为null(空)
第二个判断用户名是否为""(空字符串)
""并不等于null
数据类型转换错误时会返回INPUT
(1)校验方法在LoginAction中添加validate()
public void validate(){ if(user.getUsername()==null||"",equals(user.getUsername)){ this.addFieldError("username","用户名不可为空!"); } }
(2)表单页面加入struts2标签
<%@ taglib prefix="s" uri="/struts-tags" %> <input type="text" name="username" /><s:fielderror name="username"></s:fielderror>
结果类型input的效果 * 1.当参数类型转换错误时,如age输入框中的类型是字母等情况,方法自动返回input * 2.当action中存在addFiledError时: * 1)addFileError放在一般执行方法,addFieldError("", "");语句后面有返回input的语句 * 2)addFileError放在validate()中 *3.FileError的表现形式: * 在jsp页面中使用<s:fielderror/>标签,该标签name属性为addFieldError方法中的参数fieldName,在jsp页面中使用struts标签, * 需要导入标签库 语句:<%@ taglib prefix="s" uri="/struts-tags" %>
INPUT处理结果类型。有2种方式能触发result标签的name为"input"的action。
* 1.当参数类型转换错误时,如age输入框中的类型是字母等情况,方法自动返回input *
2.当action中存在addFiledError时:
1)addFileError放在一般执行方法,addFieldError("", "");语句后面有返回input的语句 *
2)addFileError放在validate()中
*3.FileError的表现形式: * 在jsp页面中使用<s:fielderror/>标签,该标签name属性为addFieldError方法中的参数fieldName,在jsp页面中使用struts标签 *
需要导入标签库 语句:<%@ taglib prefix="s" uri="/struts-tags" %>
1.Action类的父类ActionSupport中有一个收集错误信息的容器Map,错误信息是名称fieldName和描述信息errorMessage的键值对
2.struts框架把login.jsp中的表单数据传递给Action类的方法进行处理后,如果有错误则错误信息被添加到容器里,方法返回值INPUT
3.struts框架从处理结果中提取出错误信息,并注入到INPUT对应的jsp文件中,将该jsp返回给用户
4.用户得到jsp后,根据标签<s:fielderror>的属性name匹配错误信息fieldName,将错误信息显示在视图对应位置