Struts2之内置数据类型转换器

前言

  本文主要介绍内置数据类型转换器使用。本文使用的struts版本为struts-2.2.1.1。

说明

  Struts提供了一些内置的类型转换器,将请求参数中的字符串转换成相应的类型。内置类型转换支持的类型如下:

    String 

    boolean / Boolean 

    char / Character int / Integer, float / Float, long / Long, double / Double 

    Date  使用本地化的日期格式

    arrays 

    collections

  Struts根据请求参数名(基于ONGL的参数名)将转换后的值赋给相应的Action中的属性。常用格式:

    1.name  —— 赋值给Action中属性名为name的属性

    2.bean.firstname  —— 赋值给Action中属性名为bean对象的firstname属性

    3. people[0].name   —— 赋值给List对象的name属性

    4.friends['patrick'].name  —— 赋值给Map对象的name属性

示例

BuilInConvertor.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding
="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
<form action="../typeconvert/builtin.action" method="post">
姓名:
<input type="text" name="name" /><br />
年龄:
<input type="text" name="age" /><br />
出生日期:
<input type="text" name="birthday" /><br />
爱好:
<input type="checkbox" name="hobby" value="1" title="看电影"/>看电影
<input type="checkbox" name="hobby" value="2" />看小说
<input type="checkbox" name="hobby" value="3" />AAA
<br />
FirstName:
<input type="text" name="nameBean.firstName" />LastName:<input type="text" name="nameBean.lastName" /><br />
<br />
List类型测试
<br />
FirstName:
<input type="text" name="listName[0].firstName" />LastName:<input type="text" name="listName[0].lastName" /><br />
FirstName:
<input type="text" name="listName[1].firstName" />LastName:<input type="text" name="listName[1].lastName" /><br />
FirstName:
<input type="text" name="listName[2].firstName" />LastName:<input type="text" name="listName[2].lastName" /><br />
Map测试:
<br />
FirstName:
<input type="text" name="mapName['name1'].firstName" />LastName:<input type="text" name="mapName['name1'].lastName" /><br />
FirstName:
<input type="text" name="mapName['name2'].firstName" />LastName:<input type="text" name="mapName['name2'].lastName" /><br />
FirstName:
<input type="text" name="mapName['name3'].firstName" />LastName:<input type="text" name="mapName['name3'].lastName" /><br />
Set测试:
<br>
<input type="text" name="testSet" /><br />
<input type="text" name="testSet" /><br />
<input type="text" name="testSet" /><br />
<input type="submit" value="提交" />
</form>
</body>
</html>

BuiltInConvertorAction.java

package com.struts2.typeconvert;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionSupport;

public class BuiltInConvertorAction extends ActionSupport {
private int age;
private Date birthday;
private int[] hobby;
private String name;
private Name nameBean;

private List<Name> listName;
private Map<String, Name> mapName;
private Set<Integer> testSet;

@Override
@Action(value
="/typeconvert/builtin",results={
@Result(name
="success",location="/typeconvert/BuilInConvertor.jsp",type="dispatcher"),
@Result(name
="input",location="/typeconvert/BuilInConvertor.jsp",type="dispatcher")
})

public String execute() throws Exception {

System.out.println(
"姓名:"+name);
System.out.println(
"年龄:"+age);
System.out.println(
"出生日期:"+birthday.toLocaleString());
System.out.println(nameBean.getFirstName()
+" "+nameBean.getFirstName());

for(int i=0;i<hobby.length;i++){
System.out.println(
" "+hobby[i]);
}

Iterator
<Name> iter = listName.iterator();
while(iter.hasNext()){
Name name
= iter.next();
System.out.println(
"姓名:"+name.getFirstName()+" "+name.getLastName());
}

Iterator
<Name> iter1 = mapName.values().iterator();
while(iter1.hasNext()){
Name name
= iter1.next();
System.out.println(
"姓名:"+name.getFirstName()+" "+name.getLastName());
}

Iterator
<Integer> iter2 = testSet.iterator();
while(iter2.hasNext()){
System.out.println(iter2.next());
}
return super.execute();
}

//Getter and Setter method ..........

}


作者:红枫落叶
出处:http://www.cnblogs.com/wushiqi54719880/
关于作者:专注于Java企业运用、海量数据处理、hadoop、数字图像处理等。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过wushiqi54719880@126.com  联系我,非常感谢。

posted @ 2011-07-09 14:42  红枫落叶  阅读(2429)  评论(0)    收藏  举报