- 浏览: 102886 次
- 性别:
- 来自: 深圳
最新评论
-
qq1988627:
gaolegao2008 写道说的是个啥。有冲突怎么办呢。也不 ...
xfire与spring组合创建webservice -
gaolegao2008:
说的是个啥。有冲突怎么办呢。也不说个解决的办法。唉
xfire与spring组合创建webservice -
xiaoliefengfeng:
加油,为码农争光啊
我要的其实并不多 你为什么拒绝我 -
qq1988627:
huchaoqqqq 写道用的ext几版本做的呢,有没有相关资 ...
第一次使用Ext写系统 -
huchaoqqqq:
用的ext几版本做的呢,有没有相关资料,我也想最近弄下ext ...
第一次使用Ext写系统
package zxc.utils; import java.lang.reflect.Member; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import org.springframework.util.StringUtils; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.ObjectTypeDeterminer; import com.opensymphony.xwork2.util.XWorkBasicConverter; import com.opensymphony.xwork2.util.XWorkConverter; public class CustomShareConverter extends XWorkBasicConverter { public static final String SEQUENCE_SEPARATOR = ","; public static final String MAP_SEPARATOR = ":"; private ObjectTypeDeterminer objectTypeDeterminer; @Inject public void setObjectTypeDeterminer(ObjectTypeDeterminer det) { this.objectTypeDeterminer = det; } /** * 这里的toType一定是一个在配置文件将此转换器作为它的转换器的类或者是String类 */ @SuppressWarnings("unchecked") @Override public Object convertValue(Map context, Object target, Member member, String property, Object value, Class toType) { if (value == null || toType == String.class || ((String[]) value).length != 1) { //注意第一个条比较怪,具体解释是:1.如果为null交给超类;2.如果向前台转,也交给超类; //3.前台向后台转,且value不为null,但是前台传递同一个name多于一个值,则仍然使用超类转换 return super.convertValue(context, target, member, property, value, toType); } String strValue = ((String[]) value)[0];//我现存在认为只要前台传值至少会有一个元素,放在这个表达式在这里确认一下 if (toType == Boolean.class) { if (value == null || !StringUtils.hasText(strValue) || "null".equals(strValue)) { return null; } else if ("true".equals(strValue) || "1".equals(strValue)) { return Boolean.TRUE; } else {//注意:除去true,1,与null全部返回false return Boolean.FALSE; } } else if (toType.isArray() || Collection.class.isAssignableFrom(toType)) {//向台向后台转,并且是单参数(即序列转数组) String sequence = strValue; if (!StringUtils.hasText(sequence)||"null".equals(sequence)) { return null;//对序列情况的处理 } //这里重写了拆分逻辑 value = new SequenceSplitor(sequence).split(SEQUENCE_SEPARATOR.charAt(0)); return super.convertValue(context, target, member, property, value, toType); } else if (Map.class.isAssignableFrom(toType)) { //超类并没有给出对map情况的处理,这里直接将它处理掉,但是map中的成员仍然是依赖超类处理 return convertToMap(context, target, member, property, value, toType); } throw new RuntimeException("预期外的类型"); } //将一个序列转换成一个Map private Object convertToMap(Map<?, ?> context, Object target, Member member, String property, Object value, Class<?> toType) { String sequence = ((String[]) value)[0]; String[] splitArray = new SequenceSplitor(sequence).split(SEQUENCE_SEPARATOR.charAt(0)); Class<?> keyClass = String.class; Class<?> valueClass = String.class; if (target != null) { keyClass = this.objectTypeDeterminer.getKeyClass(target.getClass(), property); valueClass = this.objectTypeDeterminer.getElementClass(target.getClass(), property, null); } Map<Object, Object> map = createMap(context, target, member, property, value, toType, splitArray.length); for (int index = 0; index < splitArray.length; index++) { String keyValue = splitArray[index]; //这里重写了拆分逻辑 String[] keyValuePair = new SequenceSplitor(keyValue).split(MAP_SEPARATOR.charAt(0)); //注意这个地方注入xworkConverter来进行转换,主要是怕遗漏Map中的键值有可能需要定制转换器,还有一点需要注意,传值使用字符串数组以模拟前台 Object key = XWorkConverter.getInstance().convertValue(context, null, null, null, new String[] { keyValuePair[0] }, keyClass); Object val = XWorkConverter.getInstance().convertValue(context, null, null, null, new String[] { keyValuePair[1] }, valueClass); map.put(key, val); } return map; } private Map<Object, Object> createMap(Map<?, ?> context, Object target, Member member, String property, Object value, Class<?> toType, int size) { Map<Object, Object> map; if (toType == ConcurrentMap.class) { if (size > 0) { map = new ConcurrentHashMap<Object, Object>(size); } else { map = new ConcurrentHashMap<Object, Object>(); } } else if (toType == SortedMap.class) { map = new TreeMap<Object, Object>(); } else { if (size > 0) { map = new HashMap<Object, Object>(size); } else { map = new HashMap<Object, Object>(); } } return map; } }
发表评论
-
进制转换
2014-08-29 18:55 911package com.byd.core; imp ... -
Java发送Email
2011-11-07 13:57 1003package byd.core; import java. ... -
天干地支算法
2011-10-10 11:44 1128/** * <url>http://en.w ... -
MD5
2011-09-27 09:34 715public class Encryptor { ... -
java运行可以执行文件
2011-08-15 10:44 732# package com.yymt.pf.rpc.loadb ... -
随记生成验证码
2011-08-06 09:28 932package com.hrm.houfei.utils; ... -
TLD生成
2011-08-06 09:16 964package j2ee.util; import ja ... -
页面解析
2011-08-06 09:13 837package com.atom.util; impor ... -
StringUtils 工具类
2011-08-06 09:11 1048package com.atom.util; impor ... -
重构HashTable
2011-08-06 09:03 873package com.atom.util; impor ... -
文件解析
2011-08-06 08:52 521package com.byd.portal.pagedesi ... -
工作流(workflow)
2011-08-06 08:39 1187package com.byd.mes.plugins.wor ... -
缓存处理工具类
2011-08-06 08:20 1package com.byd.mes.util.cache; ... -
缓存处理工具类
2011-08-06 08:20 1161package com.byd.mes.util.cache; ... -
Java执行javascript
2011-08-06 08:17 893package com.byd.mes.util.script ... -
文件处理工具类
2011-08-05 17:12 857/* * MyUtils.java * * */ ... -
Struts2文件上传下载
2011-08-05 16:42 1130package com.byd.action; impo ... -
对于不同数据库分页分查询析
2011-08-05 16:32 1012package zxc.utils; /** * 这 ... -
数字转中文
2011-08-05 16:28 784package zxc.utils; import ja ... -
生成唯一流水码
2011-08-05 09:50 1012package com.byd.mes.util; im ...
相关推荐
sqlserver数据库中的表通过hibernate反射生成的的实体类, 通过代码生成oracle数据库的表
实体类转换成 JSON 字符串,将datatable转换为json,DataTable转换实体类
实用的.net实体类转换,在项目中稳定长期的使用,好用分享给大家!
C++中MFC开发CString类转换函数大全,涵盖以下函数: CString stringtoC(string x);//string类转CString类 string Ctostring(CString x);//CString类转string类 double Ctodouble(CString x);//CString类转double类...
java项目实体类转换实例
将现有的C++类转换成dll动态链接库 C++类转换成dll dll动态链接库
三调地类转换为三大类
实体类跟数据传递类转换类TypeCast.java (供参考) 实体类跟数据传递类转换类TypeCast.java (供参考)实体类跟数据传递类转换类TypeCast.java (供参考)
为此,以计数处理方式组织数据并使用将在本文中应用的标准转换类转换时间非常重要。 在系数和协变量的影响随时间变化的情况下,广泛使用的最大似然估计方法在估计一致的估计时变得更加复杂和繁琐。 为了克服这个...
易语言编码类转换模块源码,编码类转换模块,URL编码Utf8,URL编码,URL解码Utf8,URL解码,Ansi转Utf8,Utf8转ansi,Unicode转Utf8,Ansi转Unicode,Unicode转ansi,Utf8转Unicode,MultiByteToWideChar,MultiByteToWideChar1,...
易语言源码易语言编码类转换模块源码.rar 易语言源码易语言编码类转换模块源码.rar 易语言源码易语言编码类转换模块源码.rar 易语言源码易语言编码类转换模块源码.rar 易语言源码易语言编码类转换模块源码.rar ...
图文转换之流程图类转换.ppt
使用arcgis calculate赋值 选python 直接加载通过三调DLTB中DLBM八大类转换三大类名称
图文转换之流程图类转换剖析.ppt
图文转换之流程图方位图类转换).pptx
表和类转换,TableToClass ,通用
XML与实体类的相互转换工具,util是工具类,MyTest包含实体类转xml字符串以及XML字符串转实体类的方法,需要引入外部依赖或jar包,亲测可用
C#下支持一行代码将实体类转换为JSON字符串,https://blog.csdn.net/simoral/article/details/80625654
行业资料-电子功用-具有E类转换器模块的转换器电路的说明分析.rar
本文实例讲述了C#实现实体类与字符串互相转换的方法。分享给大家供大家参考。具体实现方法如下: using System; using System.Collections.Generic; using System.Text; namespace PackDLL.Data.ConvertData { ///...