三大框架(ssh)学习——Struts深入学习—数据类型转换器

数据类型转换器

Jsp提交的参数全部是string类型,struts2通过拦截器可以将String类型的参数自动转化成常用的数据类型,比如:数字、时间等,然后通过get和set方法设置到对应的action中的属性。

但是,有时候struts2默认的类型转换器不能符合我们的要求。这时候,需要我们进行自定义数据类型转换器。

 

下面是我们自定义数据类型转换器的步骤:

1. login.jsp页面内容:

<form action="User.action">

用户名:<input type=text name=user.uname /> <br/>

生日:<input type=text name=user.birthday /> <br/>

年龄:<input type=text name=user.age /> <br/>

<input type=submit value=登陆  />

</form>

2.对应的bean:

package com.gao.vo;

 

import java.util.Date;

 

public class User {

private String uname;

private Date birthday;

private int age;

 

   //省略对应的get和set方法

 

public User(String uname, Date birthday, int age) {

super();

this.uname = uname;

this.birthday = birthday;

this.age = age;

}

 

public User() {

}

}

3.UserConvertor自定义的类型转换器

package com.gao.convertor;

 

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import com.gao.vo.User;

 

public class UserConvertor extends StrutsTypeConverter {

 

@Override

public Object convertFromString(Map context, String[] values /*使用字符串数组代表表单域的值,使用字符串数组是为了考虑最通用的情况! */ , Class toClass)  {

System.out.println("开始转化!");

User user = new User();

user.setUname(values[0]);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

try {

user.setBirthday(sdf.parse(values[1]));

} catch (ParseException e) {

e.printStackTrace();

}

user.setAge(new Integer(values[2]));

 

return user;

}

 

@Override

public String convertToString(Map arg0, Object arg1) {

 

return null;

}

 

}

4.在src下新建xwork-conversion.properties,配置全局转换器,内容如下:
com.gao.vo.User=com.gao.convertor.UserConvertor

5.Action中代码示例:

package com.gao.action;

 

import com.gao.vo.User;

import com.opensymphony.xwork2.ActionSupport;

 

//使用ActionSupport可以大大简化开发

public class UserAction extends ActionSupport {

 

private User user;

 

public String execute() throws Exception{

System.out.println(user.getUname());

System.out.println(user.getBirthday());

 

return SUCCESS;

}

 

public User getUser() {

return user;

}

 

public void setUser(User user) {

this.user = user;

}

 

 

}

配置了类型转换器后,他会自动产生作用,不需要我们调用。

类型转换器一般像上面一样配置成全局转换器,如果想只对某个action起作用,可以在struts.xml中<action>元素中配置他的属性:converter即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值