jQuery MiniUI

标题: 表单提交,后台报错java.text.ParseException: Unparseable date: "contecte [打印本页]

作者: ykz252611    时间: 2013-8-2 10:15:02     标题: 表单提交,后台报错java.text.ParseException: Unparseable date: "contecte

我做了一个简单的新增功能,涉及到的表只有一个张,但是页面的$.ajax()将表单数据提交到后台,获得的json数据如下:
[{"id":"","name":"rr","address":"ee","postcode":"ww","email":"dd","contecter":"qq","tel":"ff"}]
所有字段都没有校验,都是字符串类型,但是在使用ArrayList rows = (ArrayList)JSONUtils.Decode(json);时,抛出异常:
Caused by: java.text.ParseException: Unparseable date: "contecter"


请大神帮忙支招

作者: factory    时间: 2013-8-2 11:20:16

你看下这个文章:
http://www.cnblogs.com/mabaishui/archive/2010/08/27/1810290.html
作者: ykz252611    时间: 2013-8-2 11:35:08

factory 发表于 2013-8-2 11:20
你看下这个文章:
http://www.cnblogs.com/mabaishui/archive/2010/08/27/1810290.html

您好,非常感谢您的解答
但是在我提交的字段中根本就没有date类型的数据,全部是String类型的,我不明白的是你们的demo中JSON.java这个类的方法Decode()中要有如下代码:
deserializer.use(String.class, new DateTransformer("yyyy-MM-dd'T'HH:mm:ss"));
为什么要把所有的String.class都解析为Date格式,这样我传递一个字符串进来就会抛出异常了
作者: niko    时间: 2013-8-2 15:37:34

这个只是判断某种格式的字符串,转换为date。
应该不影响你的,你也可以自己找一个JSON序列化组件来做。
作者: 卢桂福    时间: 2013-8-2 16:50:29

我通常是自己写一个方法来装入对象参考代码
//        把json数据转换成java对象仅支持 属性是String ,int ,Intgeter,float,Float,double,Double,java.sql.Date,java.util.Date的java对象
        public static void jsonParamToObject(HttpServletRequest request ,Object object,String beanName){
                Class c=object.getClass();
                Enumeration enu=request.getParameterNames();
                Object o=null;
                String fieldName=null;
                String attr[]=null;
                Field field=null;
                SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
                while(enu.hasMoreElements()){
                        o=enu.nextElement();
                        try{
                                if(String.class.equals( o.getClass())&&o.toString().indexOf(beanName)==0){
                                        fieldName=o.toString();
                                        attr=fieldName.split("\\[");
                                        if(attr.length<=1)continue;
                                        fieldName=attr[attr.length-1].replaceAll("]", "");
                                        field=c.getDeclaredField(fieldName);
                                        field.setAccessible(true);
                                        if(String.class.equals(field.getType()))field.set(object, request.getParameter(o.toString()));
                                        else if(Integer.class.equals(field.getType())||int.class.equals(field.getType()))field.set(object, Integer.parseInt(request.getParameter(o.toString()).toString()));
                                        else if(Float.class.equals(field.getType())||float.class.equals(field.getType()))field.set(object, Float.parseFloat(request.getParameter(o.toString()).toString()));
                                        else if(Double.class.equals(field.getType())||double.class.equals(field.getType()))field.set(object, Double.parseDouble(request.getParameter(o.toString()).toString()));
                                        else if(Date.class.equals(field.getType())){
                                                Date jsd=new Date(sdf.parse(request.getParameter(o.toString()).toString()).getTime());
                                                field.set(object,jsd);
                                        }else if(java.util.Date.class.equals(field.getType())){
                                                java.util.Date jud=sdf.parse(request.getParameter(o.toString()).toString());
                                                field.set(object,jud);
                                        }
                                }
                        }catch (Exception e) {
                                System.out.println("\n--"+60);
                               
                        }
               
                }
        }
作者: 卢桂福    时间: 2013-8-2 16:51:46

自己写对于自己的项目适合很好,但是对于其他的就会有一定的局限性
作者: ykz252611    时间: 2013-8-2 17:18:29

卢桂福 发表于 2013-8-2 16:50
我通常是自己写一个方法来装入对象参考代码
//        把json数据转换成java对象仅支持 属性是String ,int ,Intget ...

大牛啊,顶礼膜拜中……
作者: 卢桂福    时间: 2013-8-2 20:05:13

ykz252611 发表于 2013-8-2 17:18
大牛啊,顶礼膜拜中……

= =我那是什么大牛,码农炮灰都算不上,还未毕业,正找工作,现在工作好难找啊
作者: niko    时间: 2013-8-3 21:52:18

请参考json.java,我们提供的json序列化组件,应该能通用处理对象




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2