本文主要是介绍strut2输入校验框架的一个例子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
struts2输入校验有2中方法。校验方式有2中:对所有方法校验,对某个方法校验
1.采用手工编写代码实现。
2.基于XML配置方式实现。
·采用手工编写代码校验Action中的所有方法
这种方式需要在Action类中重写validate()方法,validate()方法会校验action中所有与execute方法签名相同的方法。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为”input“的result。在input视图中可以通过<s:fielderror/>显示失败信息。
例如:
index.jsp页面
<body>
<s:fielderror/>
<form action="${pageContext.request.contextPath}/hello/test/user_update.action" method="post">
用户名:<input type="text" name="username"/>不能为空<br/>
手机号:<input type="text" name="phone"/>不能为空,并且要符合手机号的格式1,3,5,8,后面是9个数字<br/>
<input type="submit" value="提交"/>
</form>
</body>
Action类
public class Person extends ActionSupport{
private String username;
private String phone;
省略get,set方法
public String update(){
ActionContext.getContext().put("message", "更新成功");
return "message";
}
public String save(){
ActionContext.getContext().put("message", "保存成功");
return "message";
}
@Override
public void validate() { //validate方法会对action中的所有方法进行校验
if(username==null||"".equals(username.trim())){
this.addFieldError("username", "用户名不能为空");
}
if(phone==null||"".equals(phone.trim())){
this.addFieldError("phone", "手机号不能为空");
}else{
if(!Pattern.compile("^1[358]\\d{9}$").matcher(this.phone).matches()){
this.addFieldError("phone", "手机号格式不正确");
}
}
}
}
struts.xml文件配置
<package name="hello" extends="struts-default" namespace="/hello/test">
<action name="user_*" class="com.amaker.Person.Person" method="{1}">
<result name="message">/WEB-INF/page/message.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
message.jsp页面 ${message}
·采用手工编写代码校验Action中的某个方法
这个上上面的校验十分相似,唯一不同的地方是:方法名比如我们要对update方法校验,方法名是validateUpdate(){...} ,注意方法名的首字母需要大写。代码同上一样。只是方法名字稍微改变一下。
·基于XML配置方式实现校验Action中的所有方法
例如:
struts.xml文件,jsp页面,都没变化同时所示
验证xml文件,此文件名字格式是:action类名+validation.xml
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空</message>
</field-validator>
</field>
</validators>
action类
public class PersonAction extends ActionSupport{
private String username;
private String phone;
省略了 get set,并且采用xml格式验证,此处不能有validate方法了
public String update(){
ActionContext.getContext().put("message", "更新成功");
return "message";
}
public String save(){
ActionContext.getContext().put("message", "保存成功");
return "message";
}
}
这篇关于strut2输入校验框架的一个例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!