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