Struts2实现集合类型转换器

            Struts2只提供了一些int,double等基本类型的数据转换,但对于一些非基本类型的数据,Struts2则提供了很

好的扩展,即让需要转换的对象集成DefaultTypeConverter类或者StrutsTypeConverter类,获得一个类型转换器的入口,从而实现开发者自己的类型转换器,完成字符串和自定义符合类型之间的转换。

            Struts2中有内建的类型转换器和自定义类型转换器以及集合类型转换器,这里我主要介绍集合类型转换器,

有些时候我们需要再页面上批量输入一些数据时,这是就需要使用集合类型的转换器功能来完成对集合的类型转换,

比如set和list类型。

下面使用list

register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<style>
.content {
font-size: 12px;
}
#search_botton {
border: 1px solid #8CC6FF;
color: #0066CC;
padding: 1px 1px;
background-color: #f1f9ff;
}
</style>
</head>
<body>
<s:form action="registerAction" method="post">
<table border="0" class="content">
<tr>
 <td>please select the bobby</td>
</tr>
<tr>
  <td><s:checkboxlist name="hobby"
  list="{'reading','dancing','swimming','singing'}" value="{'reading','swimming'}"/></td>
</tr>
<tr>
<td><s:submit
value="提交" id="search_botton"></s:submit></td>
</tr>
</table>
</s:form>
</body>
</html>


test-conversion.properties文件内容
#注册全局转换器
#文件名必须是xxx-conversion.properties格式
#此文件必须放在根目录下,即src下与struts.xml文件同级,以便所有的Action都能够使用
#文件内容必须是转换的类名的全路径=具体转换器路径
wzl.Struts2.domain.Hobby=wzl.Struts2.converter.RegisterConverter


RegisterAction类
package wzl.Struts2.action;


import java.util.List;


import com.opensymphony.xwork2.ActionSupport;


public class registerAction extends ActionSupport {
    private List hobby;
public List getHobby() {
return hobby;
}
public void setHobby(List hobby) {
this.hobby = hobby;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}


}




bobby类
package wzl.Struts2.domain;


public class Hobby {
 private String bobby;


public Hobby() {
super();
// TODO Auto-generated constructor stub
}


public String getBobby() {
return bobby;
}


public void setBobby(String bobby) {
this.bobby = bobby;
}
}






RegisterConverter类(此类主要讲register.jsp页面中用户选择的爱好存储到List容器里负责类型转换器)
package wzl.Struts2.converter.RegisterConverter;


import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import wzl.Struts2.domain.Hobby;
public class RegisterConverter extends StrutsTypeConverter{
@Override
public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
        List list = new ArrayList();
        for(int i=0;i<arg1.length;i++){
        Hobby hobby = new Hobby();
        String str= arg1[i];
        hobby.setBobby(str);
        list.add(hobby);
        }
return list;
}
@Override
public String convertToString(Map arg0, Object arg1) {
List list  =new ArrayList();
StringBuffer result = new StringBuffer();
for (int i = 0; i < list.size(); i++) {
Hobby h = (Hobby) list.get(i);
result.append(h.getBobby()+"");
}
return result.toString();
}
}




showRegister.jsp页面(显示用户选择的爱好)
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<style>
.content {
font-size: 12px;
}
</style>
</head>
<body>
<table class="content">
<tr>
<td>
your selected is:
</td>
</tr>
<s:iterator value="#request.hobby" var="v">
 <tr>
   <td><s:property></s:property></td>
 </tr>
</s:iterator>
</table>
</body>
</html>



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值