精华帖 (9) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2012-08-26
depravedangel 写道 可以的,我调试打断点都没进来,打印输出语句也没输出,代码如下:
public class DateConverter implements Converter<String, Date> { public Date convert(String source) { System.out.println(source); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.setLenient(false); try { return dateFormat.parse(source); } catch (ParseException e) { e.printStackTrace(); } return null; } } 还有别的可能情况么,我调试了下,代码走的RequestMappingHandlerMapping里面去获取值,感觉这个配置根本就没作用 你直接使用 @DateTimeFormat(pattern="yyyy-MM-dd") 即可 不用自定义的 |
|
返回顶楼 | |
发表时间:2012-08-26
jinnianshilongnian 写道 你直接使用 @DateTimeFormat(pattern="yyyy-MM-dd") 即可 不用自定义的 我的需求要实现多种日期格式注入,这种注解只能注入一种格式。 我看到一篇文章里面提到这些: 引用 Servlet中的输入参数为都是string类型,而spring mvc通过data bind机制将这些string 类型的输入参数转换为相应的command object(根据view和controller之间传输数据的具体逻辑,也可称为model attributes, domain model objects)。在这个转换过程中,spring实际是先利用java.beans.PropertyEditor中的 setAdText方法来把string格式的输入转换为bean属性, ...... ............................................ 对于requestBody或httpEntity中数据的类型转换 Spring MVC中对于requestBody中发送的数据转换不是通过databind来实现,而是使用HttpMessageConverter来实现具体的类型转换。 我是通过ajax post提交数据的,是不是应该用HttpMessageConverter来实现? |
|
返回顶楼 | |
发表时间:2012-08-26
depravedangel 写道 jinnianshilongnian 写道 你直接使用 @DateTimeFormat(pattern="yyyy-MM-dd") 即可 不用自定义的 我的需求要实现多种日期格式注入,这种注解只能注入一种格式。 我看到一篇文章里面提到这些: 引用 Servlet中的输入参数为都是string类型,而spring mvc通过data bind机制将这些string 类型的输入参数转换为相应的command object(根据view和controller之间传输数据的具体逻辑,也可称为model attributes, domain model objects)。在这个转换过程中,spring实际是先利用java.beans.PropertyEditor中的 setAdText方法来把string格式的输入转换为bean属性, ...... ............................................ 对于requestBody或httpEntity中数据的类型转换 Spring MVC中对于requestBody中发送的数据转换不是通过databind来实现,而是使用HttpMessageConverter来实现具体的类型转换。 我是通过ajax post提交数据的,是不是应该用HttpMessageConverter来实现? 1、如果是通过ajax提交的参数 跟普通一样 2、如果ajax 提交的内容 需要HttpMessageConverter进行内容的转换; 3、你需要参考 http://www.iteye.com/topic/1123319#2348338 |
|
返回顶楼 | |
发表时间:2012-08-26
jinnianshilongnian 写道 depravedangel 写道 jinnianshilongnian 写道 你直接使用 @DateTimeFormat(pattern="yyyy-MM-dd") 即可 不用自定义的 我的需求要实现多种日期格式注入,这种注解只能注入一种格式。 我看到一篇文章里面提到这些: 引用 Servlet中的输入参数为都是string类型,而spring mvc通过data bind机制将这些string 类型的输入参数转换为相应的command object(根据view和controller之间传输数据的具体逻辑,也可称为model attributes, domain model objects)。在这个转换过程中,spring实际是先利用java.beans.PropertyEditor中的 setAdText方法来把string格式的输入转换为bean属性, ...... ............................................ 对于requestBody或httpEntity中数据的类型转换 Spring MVC中对于requestBody中发送的数据转换不是通过databind来实现,而是使用HttpMessageConverter来实现具体的类型转换。 我是通过ajax post提交数据的,是不是应该用HttpMessageConverter来实现? 1、如果是通过ajax提交的参数 跟普通一样 2、如果ajax 提交的内容 需要HttpMessageConverter进行内容的转换; 3、你需要参考 http://www.iteye.com/topic/1123319#2348338 您的这篇文章我反复看过几遍,您这边是通过http://localhost:9080/springmvc-chapter4/dataBind?username=zhang&bool=yes&schooInfo.specialty=computer&hobbyList[0]=program&hobbyList[1]=music&map[key1]=value1&map[key2]=value2&phoneNumber=010-12345678&date=2012-3-18 16:48:48&state=blocked方式提交的。 我是通过提交http://localhost:9080/springmvc-chapter4/dataBind,post的内容为date=2012-3-18&state=blocked,难道我要使用HttpMessageConverter方式解析date=2012-3-18&state=blocked这种字符串? |
|
返回顶楼 | |
发表时间:2012-08-26
depravedangel 写道 jinnianshilongnian 写道 depravedangel 写道 jinnianshilongnian 写道 你直接使用 @DateTimeFormat(pattern="yyyy-MM-dd") 即可 不用自定义的 我的需求要实现多种日期格式注入,这种注解只能注入一种格式。 我看到一篇文章里面提到这些: 引用 Servlet中的输入参数为都是string类型,而spring mvc通过data bind机制将这些string 类型的输入参数转换为相应的command object(根据view和controller之间传输数据的具体逻辑,也可称为model attributes, domain model objects)。在这个转换过程中,spring实际是先利用java.beans.PropertyEditor中的 setAdText方法来把string格式的输入转换为bean属性, ...... ............................................ 对于requestBody或httpEntity中数据的类型转换 Spring MVC中对于requestBody中发送的数据转换不是通过databind来实现,而是使用HttpMessageConverter来实现具体的类型转换。 我是通过ajax post提交数据的,是不是应该用HttpMessageConverter来实现? 1、如果是通过ajax提交的参数 跟普通一样 2、如果ajax 提交的内容 需要HttpMessageConverter进行内容的转换; 3、你需要参考 http://www.iteye.com/topic/1123319#2348338 您的这篇文章我反复看过几遍,您这边是通过http://localhost:9080/springmvc-chapter4/dataBind?username=zhang&bool=yes&schooInfo.specialty=computer&hobbyList[0]=program&hobbyList[1]=music&map[key1]=value1&map[key2]=value2&phoneNumber=010-12345678&date=2012-3-18 16:48:48&state=blocked方式提交的。 我是通过提交http://localhost:9080/springmvc-chapter4/dataBind,post的内容为date=2012-3-18&state=blocked,难道我要使用HttpMessageConverter方式解析date=2012-3-18&state=blocked这种字符串? 跟普通方式一样。 2、如果ajax 提交的内容(body里的数据) 需要HttpMessageConverter进行内容的转换; |
|
返回顶楼 | |
发表时间:2012-08-26
jinnianshilongnian 写道 depravedangel 写道 jinnianshilongnian 写道 depravedangel 写道 jinnianshilongnian 写道 你直接使用 @DateTimeFormat(pattern="yyyy-MM-dd") 即可 不用自定义的 我的需求要实现多种日期格式注入,这种注解只能注入一种格式。 我看到一篇文章里面提到这些: 引用 Servlet中的输入参数为都是string类型,而spring mvc通过data bind机制将这些string 类型的输入参数转换为相应的command object(根据view和controller之间传输数据的具体逻辑,也可称为model attributes, domain model objects)。在这个转换过程中,spring实际是先利用java.beans.PropertyEditor中的 setAdText方法来把string格式的输入转换为bean属性, ...... ............................................ 对于requestBody或httpEntity中数据的类型转换 Spring MVC中对于requestBody中发送的数据转换不是通过databind来实现,而是使用HttpMessageConverter来实现具体的类型转换。 我是通过ajax post提交数据的,是不是应该用HttpMessageConverter来实现? 1、如果是通过ajax提交的参数 跟普通一样 2、如果ajax 提交的内容 需要HttpMessageConverter进行内容的转换; 3、你需要参考 http://www.iteye.com/topic/1123319#2348338 您的这篇文章我反复看过几遍,您这边是通过http://localhost:9080/springmvc-chapter4/dataBind?username=zhang&bool=yes&schooInfo.specialty=computer&hobbyList[0]=program&hobbyList[1]=music&map[key1]=value1&map[key2]=value2&phoneNumber=010-12345678&date=2012-3-18 16:48:48&state=blocked方式提交的。 我是通过提交http://localhost:9080/springmvc-chapter4/dataBind,post的内容为date=2012-3-18&state=blocked,难道我要使用HttpMessageConverter方式解析date=2012-3-18&state=blocked这种字符串? 跟普通方式一样。 2、如果ajax 提交的内容(body里的数据) 需要HttpMessageConverter进行内容的转换; 不是很理解您说的“跟普通方式一样”是啥意思,ajax post提交的数据就是在body体里吧,如果这样必须使用HttpMessageConverter进行转换,那是不是我必须解析像这样的字符串:“id=&adder=0&addtime=2012-08-26&moder=0&modtime=2012-08-26&deleteStatus=0&sortOrder=0&unitId=0&remark=1&name=1&password=1&email=1”?如果需要解析这个的话,就没意义了吧 |
|
返回顶楼 | |
发表时间:2012-08-26
depravedangel 写道 jinnianshilongnian 写道 depravedangel 写道 jinnianshilongnian 写道 depravedangel 写道 jinnianshilongnian 写道 你直接使用 @DateTimeFormat(pattern="yyyy-MM-dd") 即可 不用自定义的 我的需求要实现多种日期格式注入,这种注解只能注入一种格式。 我看到一篇文章里面提到这些: 引用 Servlet中的输入参数为都是string类型,而spring mvc通过data bind机制将这些string 类型的输入参数转换为相应的command object(根据view和controller之间传输数据的具体逻辑,也可称为model attributes, domain model objects)。在这个转换过程中,spring实际是先利用java.beans.PropertyEditor中的 setAdText方法来把string格式的输入转换为bean属性, ...... ............................................ 对于requestBody或httpEntity中数据的类型转换 Spring MVC中对于requestBody中发送的数据转换不是通过databind来实现,而是使用HttpMessageConverter来实现具体的类型转换。 我是通过ajax post提交数据的,是不是应该用HttpMessageConverter来实现? 1、如果是通过ajax提交的参数 跟普通一样 2、如果ajax 提交的内容 需要HttpMessageConverter进行内容的转换; 3、你需要参考 http://www.iteye.com/topic/1123319#2348338 您的这篇文章我反复看过几遍,您这边是通过http://localhost:9080/springmvc-chapter4/dataBind?username=zhang&bool=yes&schooInfo.specialty=computer&hobbyList[0]=program&hobbyList[1]=music&map[key1]=value1&map[key2]=value2&phoneNumber=010-12345678&date=2012-3-18 16:48:48&state=blocked方式提交的。 我是通过提交http://localhost:9080/springmvc-chapter4/dataBind,post的内容为date=2012-3-18&state=blocked,难道我要使用HttpMessageConverter方式解析date=2012-3-18&state=blocked这种字符串? 跟普通方式一样。 2、如果ajax 提交的内容(body里的数据) 需要HttpMessageConverter进行内容的转换; 不是很理解您说的“跟普通方式一样”是啥意思,ajax post提交的数据就是在body体里吧,如果这样必须使用HttpMessageConverter进行转换,那是不是我必须解析像这样的字符串:“id=&adder=0&addtime=2012-08-26&moder=0&modtime=2012-08-26&deleteStatus=0&sortOrder=0&unitId=0&remark=1&name=1&password=1&email=1”?如果需要解析这个的话,就没意义了吧 从你错误信息中可以看出 你不是在body里传的 ,,,而是通过参数传的。参数已经拿到了。 org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.util.Date'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type java.util.Date for value '2012-08-26'; 建议你回头再去看看http请求及响应格式 |
|
返回顶楼 | |
发表时间:2012-08-26
jinnianshilongnian 写道 depravedangel 写道 jinnianshilongnian 写道 depravedangel 写道 jinnianshilongnian 写道 depravedangel 写道 jinnianshilongnian 写道 你直接使用 @DateTimeFormat(pattern="yyyy-MM-dd") 即可 不用自定义的 我的需求要实现多种日期格式注入,这种注解只能注入一种格式。 我看到一篇文章里面提到这些: 引用 Servlet中的输入参数为都是string类型,而spring mvc通过data bind机制将这些string 类型的输入参数转换为相应的command object(根据view和controller之间传输数据的具体逻辑,也可称为model attributes, domain model objects)。在这个转换过程中,spring实际是先利用java.beans.PropertyEditor中的 setAdText方法来把string格式的输入转换为bean属性, ...... ............................................ 对于requestBody或httpEntity中数据的类型转换 Spring MVC中对于requestBody中发送的数据转换不是通过databind来实现,而是使用HttpMessageConverter来实现具体的类型转换。 我是通过ajax post提交数据的,是不是应该用HttpMessageConverter来实现? 1、如果是通过ajax提交的参数 跟普通一样 2、如果ajax 提交的内容 需要HttpMessageConverter进行内容的转换; 3、你需要参考 http://www.iteye.com/topic/1123319#2348338 您的这篇文章我反复看过几遍,您这边是通过http://localhost:9080/springmvc-chapter4/dataBind?username=zhang&bool=yes&schooInfo.specialty=computer&hobbyList[0]=program&hobbyList[1]=music&map[key1]=value1&map[key2]=value2&phoneNumber=010-12345678&date=2012-3-18 16:48:48&state=blocked方式提交的。 我是通过提交http://localhost:9080/springmvc-chapter4/dataBind,post的内容为date=2012-3-18&state=blocked,难道我要使用HttpMessageConverter方式解析date=2012-3-18&state=blocked这种字符串? 跟普通方式一样。 2、如果ajax 提交的内容(body里的数据) 需要HttpMessageConverter进行内容的转换; 不是很理解您说的“跟普通方式一样”是啥意思,ajax post提交的数据就是在body体里吧,如果这样必须使用HttpMessageConverter进行转换,那是不是我必须解析像这样的字符串:“id=&adder=0&addtime=2012-08-26&moder=0&modtime=2012-08-26&deleteStatus=0&sortOrder=0&unitId=0&remark=1&name=1&password=1&email=1”?如果需要解析这个的话,就没意义了吧 从你错误信息中可以看出 你不是在body里传的 ,,,而是通过参数传的。参数已经拿到了。 org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.util.Date'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type java.util.Date for value '2012-08-26'; 建议你回头再去看看http请求及响应格式 您说的body里是response吧,可能我理解有误了,现在回到原来的问题上来, 你的那篇文章中提到了: <!-- ①注册ConversionService --> <bean id="conversionService" class="org.springframework.format.support. FormattingConversionServiceFactoryBean"> <property name="converters"> <list> <bean class="cn.javass.chapter7.web.controller.support. converter.StringToPhoneNumberConverter"/> <bean class="cn.javass.chapter7.web.controller.support. converter.StringToDateConverter"> <constructor-arg value="yyyy-MM-dd"/> </bean> </list> </property> </bean> ............................... 上集成过程看起来比较麻烦,后边我们会介绍<mvc:annotation-driven>和@EnableWebMvc,ConversionService会自动注册,后续章节再详细介绍。 我的那段配置没起作用,是不是哪儿需要注意些什么细节? |
|
返回顶楼 | |
发表时间:2012-08-26
LZ真是个好人呐,在LZ的帮助下,问题解决了,原因是我用的maven多模块,另外一个module下也配置了<mvc:annotation-driven />,覆盖了我这边的配置。
原来都是采用maven自动构建,每次各个module独立打包,但那样每次改下代码都得重新构建,最近在试怎么方便eclipse开发的时候用eclipse编译代码到web classes下,所以才出现了这个错误。 在这边顺便请教下,各位用maven多模块开发的时候是采用什么方式构建的呢? |
|
返回顶楼 | |