前面我们实现了从字符串到User对象的转换。如果表单中有多个User数据,我们可以批量转换。

我们把input.jsp修改为:

  1. <h1>使用分号隔开username password</h1>
  2.  
  3. <form action="userAction2.action">
  4.  
  5. <input type="text" name="user"> <br>
  6. <input type="text" name="user"> <br>
  7. <input type="text" name="user"> <br>
  8. <input type="text" name="user"> <br>
  9. <input type="text" name="user"> <br>
  10.  
  11. <input type="submit" name="submit">
  12. </form>

然后新建action,UserAction2:

  1. package com.test.action;
  2.  
  3. import java.util.List;
  4.  
  5. import com.opensymphony.xwork2.ActionSupport;
  6.  
  7. public class UserAction2 extends ActionSupport
  8. {
  9. private List<String> user;
  10.  
  11. public List<String> getUser()
  12. {
  13. return user;
  14. }
  15.  
  16. public void setUser(List<String> user)
  17. {
  18. this.user = user;
  19. }
  20.  
  21. @Override
  22. public String execute() throws Exception
  23. {
  24. return SUCCESS;
  25. }
  26. }

 

下面我们就要进行转换,此时我们需要的是将表单上一堆字符串,转化成一个String集合。

编写转换器,UserConverter3:

  1. package com.test.converter;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.StringTokenizer;
  7.  
  8. import org.apache.struts2.util.StrutsTypeConverter;
  9.  
  10. import com.test.bean.User;
  11.  
  12. public class UserConverter3 extends StrutsTypeConverter
  13. {
  14. @Override
  15. public Object convertFromString(Map context, String[] values, Class toClass)
  16. {
  17. List<User> users = new ArrayList<User>();
  18.  
  19. for(String value : values)
  20. {
  21. StringTokenizer st = new StringTokenizer(value, ";");
  22. String username = st.nextToken();
  23. String password = st.nextToken();
  24.  
  25. User user = new User();
  26. user.setUsername(username);
  27. user.setPassword(password);
  28.  
  29. users.add(user);
  30. }
  31.  
  32. return users;
  33. }
  34.  
  35. @Override
  36. public String convertToString(Map context, Object o)
  37. {
  38. @SuppressWarnings("unchecked")
  39. List<User> list = (List<User>)o;
  40.  
  41. StringBuffer sbuf = new StringBuffer();
  42.  
  43. for(User user : list)
  44. {
  45. sbuf.append("username: " + user.getUsername() + ", password: " + user.getPassword() + "\n");
  46. }
  47.  
  48. return sbuf.toString();
  49. }
  50. }

然后建立类型转换的配置文件和修改struts.xml。

启动服务器,是可以正常工作的。

Struts2数据类型转换之批量数据转换的更多相关文章

  1. struts2数据类型转换详解

    Web应用程序的交互都是建立在HTTP之上的,互相传递的都是字符串.也就是说服务器接收到的来自用户的数据只能是字符串或者是字符数组,而在Web应用的对象中,往往使用了多种不同的类型,如整数(int). ...

  2. struts2数据类型转换DefaultTypeConverter

    转https://www.cnblogs.com/IT-1994/p/5998458.html 一.前言 笔者一直觉得,学习一个知识点,你首先要明白,这东西是什么?有什么用?这样你才能了解.好了,不说 ...

  3. Struts2(二)之封装请求正文、数据类型转换、数据验证

    一.封装请求正文到对象中(重点) 1.1.静态参数封装 在struts.xml文件中,给动作类注入值,使用的是setter方法 1.2.动态参数封装 通过用户表单封装请求正文参数 1.2.1.动作类作 ...

  4. struts2学习笔记(4)——数据类型转换

    回过头来看昨天的那个例子. 在昨天的例子中,只转换了一个Point类,如果想转换多个Point类怎么办呢?在昨天的例子上面做一个小的修改. 首先在input.jsp页面中修改几个输入框. <s: ...

  5. 第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据

    第一百二十七节,JavaScript,JSON数据类型转换,数据转换成字符串,字符串转换成数据 学习要点: 1.JSON语法 2.解析和序列化 前两章我们探讨了XML的结构化数据,但开发人员还是觉得这 ...

  6. Struts2(接受表单参数)请求数据自动封装和数据类型转换

    Struts2请求数据自动封装: (1)实现原理:参数拦截器 (2)方式1:jsp表单数据填充到action中的属性:        普通的成员变量,必须给set,get可以不给的.    注意点,A ...

  7. Struts2中的数据类型转换

    Struts2对数据的类型转换 一.Struts2中自带类型转换拦截器 Struts2内部提供了大量转换器,用来完成数据类型转换的问题,有如下 * boolean 和 Boolean * char和 ...

  8. Struts2数据校验

    Struts2数据校验 1.常见数据校验方法 表单数据的校验方式: 表单中的数据必须被效验以后才能够被使用,常用的效验方式分为两种: 前台校验:也称之为客户端效验,主要是通过JS编程的方式进行表单数据 ...

  9. [.net 面向对象编程基础] (4) 基础中的基础——数据类型转换

    [.net面向对象编程基础] (4)基础中的基础——数据类型转换 1.为什么要进行数据转换? 首先,为什么要进行数据转换,拿值类型例子说明一下, 比如:我们要把23角零钱,换成2.30元,就需要把整形 ...

随机推荐

  1. 抽象语法树简介(ZZ)

    转载自: http://www.cnblogs.com/cxihu/p/5836744.html (一)简介 抽象语法树(abstract syntax code,AST)是源代码的抽象语法结构的树状 ...

  2. 服务端指南 数据存储篇 | 聊聊 Redis 使用场景(转)

    作者:梁桂钊 本文,是升级版,补充部分实战案例.梳理几个场景下利用 Redis 的特性可以大大提高效率. 随着数据量的增长,MySQL 已经满足不了大型互联网类应用的需求.因此,Redis 基于内存存 ...

  3. IE67下去掉input边框

    除了 border:none;之外 需要 border-color:#fff; overflow:hidden;

  4. AC日记——Is it rated? codeforces 807a

    Is it rated? 思路: 水题: 代码: #include <cstdio> #include <cstring> using namespace std; ],b[] ...

  5. 用 grunt-contrib-connect 构建实时预览开发环境 实时刷新

    本文基本是参照着 用Grunt与livereload构建实时预览的开发环境 实操了一遍,直接实现能实时预览文件列表,内容页面.不用刷新页面了,这比以前开发网页程序都简单. 这里要用到的 Grunt 插 ...

  6. centos6 部署strongloop

    1.安装node 1)下载官方二进制包 cd /opt wget https://nodejs.org/dist/latest-v7.x/node-v7.10.0-linux-x64.tar.gz 2 ...

  7. [thinkphp] 公共头部底部如何传递数据

    分组底下有一个公共模板文件夹 Modules/Index/Tpl/public/ 如何传递数据给模板呢? 在  入口文件/Lib/Action/  中创建类CommonAction.class.php ...

  8. 状压DP【p2622】 关灯问题II

    题目描述--->P2622 关灯问题II 没用的话: 首先第一眼看到题,嗯?n<=10?搜索? 满心欢喜地敲了一通搜索. 交上去,Wa声一片? 全部MLE! 这么坑人神奇? 一想,可能是爆 ...

  9. 设置参数进行java的jvm监控

    1.设置jconsole监控服务器的tomcat参数及java jvm大小,执行命令vi ../tomcat/bin/catalina.sh  “在服务器安装的tomcat目录下” JAVA_OPTS ...

  10. [BZOJ 2342] 双倍回文

    Link:https://www.lydsy.com/JudgeOnline/problem.php?id=2342 Algorithm: 解决回文串问题,一般从对称轴下手. 肯定先跑一边Manach ...