使用ognl 实现多值处理,处理的值比较多,如数组,集合等类型的数据

//实体类省略

//创建action,其中包括两个成员变量 分别是两个double,string类型的数组

package cn.jbit.action;

import com.opensymphony.xwork2.ActionSupport;

public class ArraysDataTransferAction extends ActionSupport {
private String[] hobbies;
private Double[] numbers=new Double[3]; public String execute(){
System.out.println("hobbies的长度是"+hobbies.length);
for(int i=0;i<hobbies.length;i++){
System.out.println("hobbies数组中第"+i+"个元素是:"+hobbies[i]);
}
System.out.println("numbers的长度是"+numbers.length);
for(int i=0;i<numbers.length;i++){
System.out.println("numbers数组中第"+i+"个元素是:"+numbers[i]);
} return SUCCESS;
}
public String[] getHobbies() {
return hobbies;
}
public void setHobbies(String[] hobbies) {
this.hobbies = hobbies;
}
public Double[] getNumbers() {
return numbers;
}
public void setNumbers(Double[] numbers) {
this.numbers = numbers;
}
}

//再次创建另外一个action,ListDataTransferAction

package cn.jbit.action;

import com.opensymphony.xwork2.ActionSupport;
import cn.jbit.bean.*;
import java.util.*; public class ListDataTransferAction extends ActionSupport {
private List<String> hobbies;
private List<Double> numbers;
private List<User> users; public String execute(){
System.out.println("hobbies的长度是"+hobbies.size());
for(int i=0;i<hobbies.size();i++){
System.out.println("hobbies数组中第"+i+"个元素是:"+hobbies.get(i));
}
System.out.println("numbers的长度是"+numbers.size());
for(int i=0;i<numbers.size();i++){
System.out.println("numbers数组中第"+i+"个元素是:"+numbers.get(i));
}
System.out.println("users的长度是"+users.size());
for(int i=0;i<users.size();i++){
System.out.println("users数组中第"+i+"个元素是:"+users.get(i).getName());
}
return SUCCESS;
}
public List<String> getHobbies() {
return hobbies;
}
public void setHobbies(List<String> hobbies) {
this.hobbies = hobbies;
}
public List<Double> getNumbers() {
return numbers;
}
public void setNumbers(List<Double> numbers) {
this.numbers = numbers;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
} }
package cn.jbit.action;

import com.opensymphony.xwork2.ActionSupport;
import cn.jbit.bean.*;
import java.util.*; public class ListDataTransferAction extends ActionSupport {
private List<String> hobbies;
private List<Double> numbers;
private List<User> users; public String execute(){
System.out.println("hobbies的长度是"+hobbies.size());
for(int i=0;i<hobbies.size();i++){
System.out.println("hobbies数组中第"+i+"个元素是:"+hobbies.get(i));
}
System.out.println("numbers的长度是"+numbers.size());
for(int i=0;i<numbers.size();i++){
System.out.println("numbers数组中第"+i+"个元素是:"+numbers.get(i));
}
System.out.println("users的长度是"+users.size());
for(int i=0;i<users.size();i++){
System.out.println("users数组中第"+i+"个元素是:"+users.get(i).getName());
}
return SUCCESS;
}
public List<String> getHobbies() {
return hobbies;
}
public void setHobbies(List<String> hobbies) {
this.hobbies = hobbies;
}
public List<Double> getNumbers() {
return numbers;
}
public void setNumbers(List<Double> numbers) {
this.numbers = numbers;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
} }

struts.xml

<?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>
<!-- <constant name="struts.custom.i18n.resources" value="message"/> -->
<package name="default" extends="struts-default">
<action name="ArraysDataTransfer" class="cn.jbit.action.ArraysDataTransferAction">
<result name="success">result2.jsp</result>
</action>
<action name="listDataTransfer" class="cn.jbit.action.ListDataTransferAction">
<result>result2.jsp</result>
</action> </package>
</struts>

首先需要做的是接受数据,创建出表单数据;

array_input.jsp和list_input.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<s:form action="ArraysDataTransfer.action">
<s:textfield name="hobbies" label="爱好:"/>
<s:textfield name="hobbies" label="爱好:"/>
<s:textfield name="hobbies" label="爱好:"/> <s:textfield name="numbers[0]" label="数字:"/>
<s:textfield name="numbers[1]" label="数字:"/>
<s:textfield name="numbers[2]" label="数字:"/>
<s:submit value="提交"/>
</s:form>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head> <body>
<s:form action="listDataTransfer">
<s:textfield name="hobbies" label="爱好:"/>
<s:textfield name="hobbies" label="爱好:"/>
<s:textfield name="hobbies" label="爱好:"/> <s:textfield name="numbers[0]" label="数字:"/>
<s:textfield name="numbers[1]" label="数字:"/>
<s:textfield name="numbers[2]" label="数字:"/> <s:textfield name="users.name" label="姓名:"/>
<s:textfield name="users.name" label="姓名:"/>
<s:textfield name="users.name" label="姓名:"/>
<s:submit value="提交"/>
</s:form>
</body>
</html>

之后分别访问http://localhost:8080/Struts2_OGNL/ArraysDataTransfer和http://localhost:8080/Struts2_OGNL/listDataTransfer

												

ongl(示例3-6 多值类型的数据处理)的更多相关文章

  1. C# 值类型 引用类型

    CLR 定义了两种类型,ReferenceTypes引用类型 和 ValueTypes 值类型.我们定义的各种Class都是引用类型,而我们用的decimal int 之类是值类型. 他们有什么区别呢 ...

  2. .net中值类型、引用类型理解的c#代码示例

    下面是以前在公司的时候给别人讲解值类型.引用类型时创建的c#代码示例,从实际使用时的角度出发,对于初学者还是很有帮助的.这里并没有深入讲解值类型包含引用类型成员时(如struct)在内存中的存放情况等 ...

  3. C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解  ...

  4. 【译】.NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱

    为何要翻译 一来是为了感受国外优秀技术社区知名博主的高质量文章,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果,最后也是为了锻炼一下自己的英文读写能力.因为是首次翻译英文文章(哎,原谅我这个 ...

  5. 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱

    引言 本篇文章主要介绍.NET中6个重要的概念:栈,堆,值类型,引用类型,装箱,拆箱.文章开始介绍当你声明一个变量时,编译器内部发生了什么,然后介绍两个重要的概念:栈和堆:最后介绍值类型和引用类型,并 ...

  6. ajaxpro返回值类型总结-DataTable(转)

    ajaxpro使用总结系列其他内容 ajaxpro ajaxmethod 重载调用问题 ajaxpro方法ajaxmethod调用示例 ajaxpro返回值类型总结-string,int ajaxpr ...

  7. .NET面试题解析(01)-值类型与引用类型

      系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 常见面试题目: 1. 值类型和引用类型的区别? 2. 结构和类的区别? 3. delegate是引用类型还 ...

  8. Emit学习(2) - IL - 值类型和引用类型(补)

    上周末回家去享受生活了, 工作是为了更好的生活嘛, 所以我把生活, 工作分的比较开. 这几天不是很忙, 在学习工作技能的同时, 发点博文, 也算是做一个学习笔记 上篇中, 贴出的地址里面那位哥, 也有 ...

  9. .NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱 (转)

    作者: Edison Chou  来源: 博客园  发布时间: 2014-09-03 15:59  阅读: 318 次  推荐: 2   原文链接   [收藏]   原文作者:Shivprasad k ...

随机推荐

  1. 初学C++ 之 auto关键字(IDE:VS2013)

    /*使用auto关键字,需要先赋初值,auto关键字是会根据初值来判断类型*/ auto i = ; auto j = ; cout << "auto i = 5" & ...

  2. 【Python大系】Python快速教程

    感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei 怎么能快速地掌握Python?这是和朋友闲聊时谈起的问题. Python包含的内容很多,加上各种标准库.拓展库, ...

  3. Lind.DDD.Repositories.Redis层介绍

    回到目录 之前已经发生了 大叔之前介绍过关于redis的文章,有缓存,队列,分布式pub/sub,数据集缓存以及仓储redis的实现等等,而今天在Lind.DDD的持久化组件里,redis当然也有一席 ...

  4. 4、ASP.NET MVC入门到精通——NHibernate构建一个ASP.NET MVC应用程序

    下周就去办理离职手续了,之前没有使用过NHibernate,只知道NHibernate是一种ORM框架,但是听说新公司是使用NHibernate在做项目,所以,我就网上找资料学习一下NHibernat ...

  5. NET IL命令查询器

    最近研究了一下IL代码,闲来无事,开发一个小工具,供大家使用.编程.破解,手头必备工具. 模糊搜索,可以把相关的命令都列出来.选中行,可以提示指令说明. 如果指令不全,可以增加指令及说明. CSDN下 ...

  6. java web学习总结(十四) -------------------JSP原理

    一.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写h ...

  7. Linq的分页与组合查询的配合使用

    1.首先使用Linq连接数据库,并扩展属性 public partial class User { public string SexStr { get { string end = "&l ...

  8. Dependency management

    Play’s dependency management system allows you to express your application’s external dependencies i ...

  9. php动态更改post_max_size, upload_max_filesize等值

    在配置文件里 有些PHP 配置选项可以用int_set() 函数 直接在 项目里修改.但是有些值确不行.例如和上传文件有关的post_max_size和upload_max_filesize int_ ...

  10. 如何使用grunt压缩js文件

    jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发人员,如果你现在还不知道grunt或者听说过 ...