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>

时间: 05-09

Struts2实现集合类型转换器的相关文章

struts2基础----&gt;自定义类型转换器

这一章,我们开始struts2中自定义类型转换器的学习. 自定义类型转换器 一.定义一个继承于StrutsTypeConverter的转换类: package com.huhx.converter; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import o

自己定义struts2中action类型转换器

DateAction.java中代码例如以下: package com.itheima.action; import java.util.Date; public class DateAction { private Date time; public Date getTime() { return time; } public void setTime(Date time) { this.time = time; } public String execute() { return "succ

Struts2之自定义类型转换器

Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用date类型是可以接收到的,但是如果传的是20101112这样类型的字符串,用date类型是获取不到,并且会出现错误的,struts2提供了一种类型转换器供我们使用. 以下为局部类型转换器的开发步骤a.首先要写一个类来继承DefaultTypeConverterb.然后覆盖convertValue这个

struts2注册局部类型转换器

要想实现自定义转换器,要让需要转换的对象继承DefaultTypeConverter类或者StrutsTypeConverter类,获得一个类型转换器的入口,从而实现开发者自己的类型转换器,完成字符串和自定义复合类型之间的转换. 注册局部类型转换器的几点要求是:1.property文件在命名上必须以Action的类名-conversion.properties的形式命名:2.property文件必须和Action在同一个目录下:3.最后要求在文件中定义对象名(非定义类名)以及对应的转换器的具体路

JAVAWEB开发之Struts2详解(二)——Action接受请求参数、类型转换器、使用Struts2的输入校验、以及遵守约定规则实现Struts2的零配置

Action接受请求参数 作为MVC框架,必须要负责解析HTTP请求参数,并将其封装到Model对象中 Struts2提供了非常强大的类型转换机制用于请求数据 到 model对象的封装 Struts2和MVC定义关系 StrutsPrepareAndExecuteFilter:控制器 在Struts2中action是什么?(Struts2是一个MVC框架) V:jsp M:action C:action StrutsPrepareAndExecuteFilter Struts2提供了三种数据封装

struts2类型转换器、 类型转换错误 以及INPUT view

1.1.1    Struts2中的类型转换器 Struts2内置了常见数据类型多种转换器 boolean 和 Boolean char和 Character int 和 Integer long 和 Long float 和 Float double 和 Double Date 可以接收 yyyy-MM-dd格式字符串 数组  可以将多个同名参数,转换到数组中 集合  支持将数据保存到 List 或者 Map 集合 1.1.2    Struts2中类型转换的错误: 1.NoSuchMetho

struts2自定义类型转换器

首先,何为struts2的类型转换器? 类型转换器的作用是将请求中的字符串或字符串数组参数与action中的对象进行相互转换. 一.大部分时候,使用struts2提供的类型转换器以及OGNL类型转换机制即可满足大部分类型转换需求.如: 类User.java package models; public class User { private String username; private String password; public String getUsername() { retur

struts2学习笔记之十一:struts2的类型转换器

Struts2的类型转换器 如何实现Struts2的类型转换器? * 继承StrutsTypeConverter * 覆盖convertFromString和convertToString 注册类型转换器 * 局部类型转换器,局部类型转换器只对当前Action起作用,需要提供如下配置文件: MyActionName-conversion.properties,MyActionName指需要使用转换器的Action名称 "-conversion.properties"固定字符串,不能修改

sruts2 自定义类型转换器

1.1.1    Struts2中自定义类型转换器:(了解) 类型转换的过程是双向的过程: JSP---->Action参数提交:String---Date. Action---->JSP数据回显:Date---String. 自定义类型转换器: * 1.实现TypeConverter * convertValue(java.util.Map<java.lang.String,java.lang.Object> context, java.lang.Object target, j