strut2输入校验框架的一个例子

本文介绍了Struts2框架中的两种输入校验方法:通过手工编写代码实现和基于XML配置方式实现。文章详细解释了如何在Action类中重写validate()方法来校验所有方法,以及如何针对特定方法进行校验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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";
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值