- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想在休息服务中使用路径参数作为完整的 ISO 时间戳。
http://domain:8080/ctx/someObj/2000-10-31 01:30:00.000-05:00
我之前打开了 mvc:annotation driven,但后来将其关闭,因此我可以在 DefaultAnnotationHandlerMapping 上将“useDefaultSuffixPattern”设置为 false。
Controller 代码
@RequestMapping(value = "/lwc/{userMidnightTime}", method = RequestMethod.GET)
@ResponseBody
public List<ProgramSnippetView> getLiveWebcastsWithin24HoursOfTime(@PathVariable(value = "userMidnightTime") @DateTimeFormat(iso= DATE_TIME) Date userMidnightTime) {
Calendar cal = new GregorianCalendar();
cal.setTime(userMidnightTime);
cal.add(Calendar.HOUR, 24);
Date endTime = cal.getTime();
return programService.getLiveWebcastSnippetsWithProductionDateInRange(userMidnightTime, endTime);
}
我收到以下错误。我可以看到框架最终使用正确的字符串调用已弃用的 Date.parse() 方法,而不是使用 joda time 来完成工作。
112977 [http-apr-8080-exec-7] DEBUG org.springframework.beans.BeanUtils - No property editor [java.util.DateEditor] found for type java.util.Date according to 'Editor' suffix convention
117225 [http-apr-8080-exec-7] DEBUG org.springframework.beans.TypeConverterDelegate - Construction via String failed for type [java.util.Date]
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.util.Date]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException
我希望 joda 解析完整的 ISO 日期,如 org.springframework.format.annotation.DateTimeFormat.java 注释文件中指定的那样:
/**
* The most common ISO DateTime Format <code>yyyy-MM-dd'T'hh:mm:ss.SSSZ</code> e.g. 2000-10-31 01:30:00.000-05:00.
* The default if no annotation value is specified.
*/
DATE_TIME, .....
应用上下文配置
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:component-scan base-package="blah.blah"/>
<mvc:resources mapping="/resources/**" location="/resources/"/>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="formatterRegistrars">
<set>
<bean class="org.springframework.format.datetime.joda.JodaTimeFormatterRegistrar">
<property name="useIsoFormat" value="true"/>
</bean>
</set>
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="order" value="0"/>
<property name="useDefaultSuffixPattern" value="false"/>
<!-- allows for periods in url -->
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="validator" ref="validator"/>
</bean>
</property>
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<!--<property name="writeAcceptCharset" value="false" />-->
</bean>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
<bean class="org.springframework.http.converter.ResourceHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
</list>
</property>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="prefixJson" value="true"/>
</bean>
</list>
</property>
</bean>
<mvc:view-controller path="/" view-name="home"/>
最佳答案
我看到的一个可能的问题是您没有向 handlerAdapter 注册 conversionService,您可以这样做:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer">
<bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="conversionService" ref="conversionService"/>
<property name="validator" ref="validator"/>
</bean>
</property>
关于java - 无法使用 DateTimeFormat 注释让 Spring MVC 解析日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12806613/
我正在使用: @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) @JsonFormat( pattern = "MM-dd-yyyy" ) private
我看不到日期格式被错误地传递到哪里导致 RangeError? 我似乎无法解析 user.created .实际上,用户详细信息是从 json 响应中引入的,但我在本示例中将它们显示为变量。 这是我的
我有这种结构的时间码 hh:mm:ss.SSS 我有一个自己的类,实现时间接口(interface)。它具有自定义字段 TimecodeHour 字段,允许小时值大于 23。我想用 DateTimeF
我有一个允许用户输入出生日期的表单: 即:4/16/40 然后,当用户处理表单时,有一个函数检查其长度,添加前导零,解析日期,然后使用 FormatDateTime 返回出生年份: strTemp :
我正在尝试使用 GWT 验证日期。对于大多数目的,使用下面的代码可以正常工作: boolean valid = true; try{ DateTimeFormat.getFor
在我的 ASP.NET MVC 项目的 global.asax.cs 的 Application_BeginRequest() 方法中有代码: Thread.CurrentThread.Current
在我的课上我有日期字段: @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime date; 我使用 DataTimeFor
我需要有关日期格式的帮助,我看不到我缺少的内容。 格式:EEEE d'th' 'of' MMMM yyyy hh:mm:ss a 日期:2016 年 4 月 6 日星期三 06:10:08 AM尝试过
我正在将一些依赖于 moment-timezone 的时间检查转换为使用 INTL.DateTimeFormat。 对于上下文,代码采用以毫秒为单位的用户当前时间 (Date.now()),并根据三个
您好,我尝试创建一个 Controller ,它将接受请求参数作为 LocalDateTime。 ex: /api/actions?page=0&size=10&from=2018-05-02T20:
我在使用 @DateTimeFormat 注释转换实际不存在的日期时遇到问题。 例如,当我设置日期 15/10/2017 时,我的实体中的注释如下: @Column(nullable = false)
我正在尝试使用 @DateTimeFormat 注释 LocalDateTime 对象为什么它不识别它? 我的主要想法是,一旦 Controller 接收到一个字符串,它就会将其转换为 LocalDa
我得到了使用 dateTimeFormat 函数的代码。最初的开发者使用了“MM-HH-YY-dd-NN”的掩码。此代码可在他的机器上运行。它适用于我们的测试服务器。但它在我的本地机器上不起作用。我只
代码: DateTimeFormat dateFormat = DateTimeFormat .getFormat("EEE MMM dd HH:mm:ss zzz y
我正在使用 Spring 3.1.1.RELEASE。我有一个模型,我提交给我的一个 Controller 。在其中,是以下字段 @DateTimeFormat(pattern = "#{appPro
我在 SpringBootApplication 中使用 @DateTimeFormat 时遇到问题。下面是我遇到问题的代码片段` package com.example.demo; import o
我在 SpringBootApplication 中使用 @DateTimeFormat 时遇到问题。下面是我遇到问题的代码片段` package com.example.demo; import o
在不同的服务器上部署 Web 应用程序时遇到问题。似乎有些不一致 DateTimeFormat模式,如 ShortDatePattern , 使用相同的文化 (pt-BR)。 在我的开发机器(安装了
昨晚我们将 Web 服务层从物理 Windows 2008 r2 迁移到虚拟 Windows 2012。 我们在日志中收到大量关于 DateTime 格式无效的事件,这很奇怪,因为我们仔细检查了我们的
https://jsfiddle.net/prd9Lz18/11 March 被返回了两次。有谁知道为什么?我现在正在使用不同的解决方案(带有月份名称的数组),但我真的很好奇为什么会这样,我觉得这不是
我是一名优秀的程序员,十分优秀!