Error setting expression 'tel' with value '[Ljava.lang.String;@38ec843'和'user.tel' with value

Error setting expression 'tel' with value '[Ljava.lang.String;@101fe4ec'
ognl.MethodFailedException: Method "setTel" failed for object org.action.MyTypeConverterAction@6479a12e [java.lang.NoSuchMethodException: org.action.MyTypeConverterAction.setTel([Ljava.lang.String;)]

报错是这样的,意思是说从字符串转换为Tel类错误.
实际上我的问题不是出在转换上,我是因为下面的代码

    public Object convertValue(Map context,Object value,Class toType) {
        //转换为类
        if (toType==Tel.class) {
            System.out.println("转换为类");
            String strTel=(String) value;
            if (strTel.indexOf('-')<0) {
                return null;
            }
            String[] arr=strTel.split("-");
            Tel tel=new Tel();
            tel.setSectionNo(arr[0]);
            tel.setTelNo(arr[1]);
            return tel;
        }
        ...
    }

注意到我是这样写的String strTel=(String) value; 我认为我只需要接收一个字符串,实质上是一个字符串数组,因为从页面传递的数值可能不止一个,例如有几个输入框的名称相同,因此,我的这种认为就出错了,在执行String strTel=(String) value; 这句的时候出了错,我打印strTel是打印不出的.
解决方法是改成转换为数组String[] strTel=(String[]) value;
更改后的代码

        if (toType==Tel.class) {
            System.out.println("转换为类");
            String[] strTel=(String[]) value;
            if (strTel[0].indexOf('-')<0) {
                return null;
            }
            String[] arr=strTel[0].split("-");
            Tel tel=new Tel();
            tel.setSectionNo(arr[0]);
            tel.setTelNo(arr[1]);
            return tel;
        }

转换出了错,就会报这个

No result defined for action org.action.MyTypeConverterAction and result input

会返回一个input(恰好我没有定义这个返回值要做什么),input的错误,一般出现在转换上,比如一个int型,你输入了一个字符串.

后面我把他移到一个工程师,又出现问题,
报错如下

Error setting expression 'user.tel' with value '[Ljava.lang.String;@6b7a33b7'

因为我这个时候tel是封装在一个User类中的,而在action类下的xxx-conversion.properties文件没有改
依然是

tel=org.converter.TelConverter

所以要改成user.tel=org.converter.TelConverter

你可能感兴趣的:(bug)