Struts2学习笔记(八):请求参数的接收和自定义类型转换器
2011-12-14 21:57
429 查看
采用基本类型接收请求参数(get/post)
在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名属性。
请求路径: http://localhost:8080/test/view.action?id=78
采用复合类型接收请求参数
请求路径: http://localhost:8080/test/view.action?product.id=78
Struts2首先通过反射技术调用Product的默认构造器创建product对象,然后再通过反射技术调用product中与请求参数同名的属性的setter方法来获取请求参数值。
将上面的类型转换器注册为局部类型转换器:
在Action类所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是Action的类名,后面的-conversion.properties是固定写法,对于本例而言,文件的名称应为HelloWorldAction-conversion.properties 。在properties文件中的内容为:
属性名称=类型转换器的全类名
对于本例而言, HelloWorldAction-conversion.properties文件中的内容为:
createtime= com.jim.conversion.DateConverter
将上面的类型转换器注册为全局类型转换器:
在WEB-INF/classes下放置xwork-conversion.properties文件 。在properties文件中的内容为:
待转换的类型=类型转换器的全类名
对于本例而言, xwork-conversion.properties文件中的内容为:
java.util.Date= com.jim.conversion.DateConverter
在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名属性。
请求路径: http://localhost:8080/test/view.action?id=78
public class ProductAction { private Integer id; public void setId(Integer id) {//struts2通过反射技术调用与请求参数同名的属性的setter方法来获取请求参数值 this.id = id; } public Integer getId() {return id;} }
采用复合类型接收请求参数
请求路径: http://localhost:8080/test/view.action?product.id=78
public class ProductAction { private Product product; public void setProduct(Product product) { this.product = product; } public Product getProduct() {return product;} }
Struts2首先通过反射技术调用Product的默认构造器创建product对象,然后再通过反射技术调用product中与请求参数同名的属性的setter方法来获取请求参数值。
自定义类型转换器
java.util.Date类型的属性可以接收格式为2009-07-20的请求参数值。但如果我们需要接收格式为20091221的请求参数,我们必须定义类型转换器,否则struts2无法自动完成类型转换。import java.util.Date; public class HelloWorldAction { private Date createtime; public Date getCreatetime() { return createtime; } public void setCreatetime(Date createtime) { this.createtime = createtime; } }
public class DateConverter extends DefaultTypeConverter { @Override public Object convertValue(Map context, Object value, Class toType) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); try { if(toType == Date.class){//当字符串向Date类型转换时 String[] params = (String[]) value;// Request.getParameterValues() return dateFormat.parse(params[0]); }else if(toType == String.class){//当Date转换成字符串时 Date date = (Date) value; return dateFormat.format(date); } } catch (ParseException e) {} return null; } }
将上面的类型转换器注册为局部类型转换器:
在Action类所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是Action的类名,后面的-conversion.properties是固定写法,对于本例而言,文件的名称应为HelloWorldAction-conversion.properties 。在properties文件中的内容为:
属性名称=类型转换器的全类名
对于本例而言, HelloWorldAction-conversion.properties文件中的内容为:
createtime= com.jim.conversion.DateConverter
自定义全局类型转换器
将上面的类型转换器注册为全局类型转换器:
在WEB-INF/classes下放置xwork-conversion.properties文件 。在properties文件中的内容为:
待转换的类型=类型转换器的全类名
对于本例而言, xwork-conversion.properties文件中的内容为:
java.util.Date= com.jim.conversion.DateConverter
可以使用struts2框架自带的类型转换器StrutsTypeConverter
public class User2Converter extends StrutsTypeConverter { @Override public Object convertFromString(Map context, String[] values, Class toClass) { String val=values[0]; StringTokenizer st=new StringTokenizer(val, ";"); String username=st.nextToken(); String password=st.nextToken(); User user=new User(); user.setUsername(username); user.setPassword(password); return user; } @Override public String convertToString(Map context, Object o) { User user=(User) o; String username=user.getUsername(); String password=user.getPassword(); return "username:"+username+",password:"+password; } }
相关文章推荐
- Struts2学习笔记(二)——请求参数的接收
- springmvc请求接收参数的几种方法
- 解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
- postman post请求接收不到参数
- Struts2 请求参数接收
- 针对RestFul风格的PUT,DELETE请求在SpringMVC的Controller层无法接收参数的解决方案
- JS文件中发送请求给后台,附带数组参数可在Action中用List类型接收
- springmvc请求接收参数的几种方法
- 关于springboot的RestFul的PUT请求,前台参数接收问题
- Struts2学习笔记(七)——Action处理请求参数
- ajax的post请求后台request.getParameter()接收不到参数问题
- SpringMVC——接收请求参数和页面传参
- ajax /get 请求,服务器端接收参数乱码
- 服务器接收到的请求参数乱码问题
- SpringMVC接收请求参数和页面传参
- struts2请求参数的接收
- Struts2之Action接收请求参数和拦截器详解
- 接收请求参数和页面传参
- struts2之请求参数接收
- springmvc请求接收参数的几种方法