对于Web应用而言,所以的请求参数都是字符串类型。在传统的Web应用中,我们经常需要通过手工编码,将接受到的参数转换为Java的各种类型,或者将Java各种类型的参数,转换为字符串发送到客户端。在Struts2框架中,提供了强大的类型转换机制,开发人员可以利用Struts2的这个机制进行任意复杂的类型转换。
对于Java的常用类型,开发人员无需为它们建立自己的类型转换器。在Struts2中可以自动完成这些数据类型的转换工作。Struts2自带的类型转换器支持以下类型与字符串的互换:
* boolean和Boolean
* char和Character
* int和Integer
* float和Float
* long和Long
* double和Double
* Date
下面为演示代码,type.jsp页面接受参数,由TypeConversionAction转接到conversion.jsp,在着过程中参数的类型转换自动完成
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>type</title>
</head>
<body>
<s:form action="typeConversion">
<!-- 对应product属性 -->
<s:textfield label="产品1" name="products"/>
<s:textfield label="产品2" name="products"/>
<s:textfield label="产品3" name="products"/>
<!-- 对应numbers属性 -->
<s:textfield label="数字1" name="numbers"/>
<s:textfield label="数字2" name="numbers"/>
<s:textfield label="数字3" name="numbers"/>
<!-- 对应collections属性 -->
<s:textfield label="集合1" name="collections"/>
<s:textfield label="集合2" name="collections"/>
<s:textfield label="集合3" name="collections"/>
<s:submit value="提交"/>
</s:form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>conversion</title>
</head>
<body>
<b>产品</b><br/>
<s:property value="products[0]"/>
<s:property value="products[1]"/>
<s:property value="products[2]"/><p/>
<b>数字</b><br/>
<s:property value="numbers[0]"/>
<s:property value="numbers[1]"/>
<s:property value="numbers[2]"/><p/>
<b>集合</b><br/>
<s:property value="collections[0]"/>
<s:property value="collections[1]"/>
<s:property value="collections[2]"/>
</body>
</html>
import com.opensymphony.xwork2.Action;
import java.util.List;
public class TypeConversionAction implements Action{
private String[] products = new String[3];
private int[] numbers = new int[3];
//集合不用初始化
private List<Integer> collections;
public String[] getProducts() {
return products;
}
public int[] getNumbers() {
return numbers;
}
public List<Integer> getCollections() {
return collections;
}
public void setProducts(String[] products) {
this.products = products;
}
public void setNumbers(int[] numbers) {
this.numbers = numbers;
}
public void setCollections(List<Integer> collections) {
this.collections = collections;
}
@Override
public String execute() {
return "conversion";
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="testType" extends="struts-default">
<action name="typeConversion" class="chapter10.part2p1.TypeConversionAction">
<result name="conversion">/chapter10/part2p1/conversion.jsp</result>
</action>
</package>
</struts>