Spring MVC:允许的默认日期格式是什么?

时间:2012-11-12 21:53:19

标签: java spring spring-mvc

在我的Spring Web MVC应用程序中,我在@Controller中有一堆方法接受Date作为@RequestParam的输入参数。没有定义任何自定义数据绑定器或属性编辑器(我承认我还不清楚这两者之间的区别),默认支持哪些日期格式?例如,我注意到像'11 / 12/2012 16:50 PM'之类的工作正常,但像'1352815200000'这样的普通milis值被拒绝了。

编辑:我得到的具体异常是:“无法将类型'java.lang.String'的值转换为必需的类型'java.util.Date';嵌套异常是java.lang.IllegalStateException:无法转换值输入[java.lang.String]到必需的类型[java.util.Date]:找不到匹配的编辑器或转换策略“

3 个答案:

答案 0 :(得分:0)

允许的日期格式可能取决于您当前的区域设置。

您可以添加一个处理程序,用于转换您喜欢的格式的日期。

我不确定是哪一个。 @InitBinder显示了从任何格式转换日期的示例..

答案 1 :(得分:0)

我相信如果没有指定转换器,Spring转换系统将最终调用弃用的Date构造函数,它将String作为参数。

/**
 * Allocates a <code>Date</code> object and initializes it so that
 * it represents the date and time indicated by the string
 * <code>s</code>, which is interpreted as if by the
 * {@link Date#parse} method.
 *
 * @param   s   a string representation of the date.
 * @see     java.text.DateFormat
 * @see     java.util.Date#parse(java.lang.String)
 * @deprecated As of JDK version 1.1,
 * replaced by <code>DateFormat.parse(String s)</code>.
 */
@Deprecated
public Date(String s) {
    this(parse(s));
}

通常应用程序有不同的要求 - 有些工作与本地时间(也可能是浏览器特定的事情和用户时区设置),有些不需要存储日期 - 所以最好实施一个策略客户端和服务器端的日期转换。

P.S。请注意,Date.parse()也已弃用。

答案 2 :(得分:0)

希望这适合你。

创建一个类为日期格式化注册编辑器。

import org.springframework.beans.PropertyEditorRegistrar
import org.springframework.beans.PropertyEditorRegistry
import org.springframework.beans.propertyeditors.CustomDateEditor
import java.text.SimpleDateFormat

public class CustomDateEditorRegistrar implements PropertyEditorRegistrar {

public void registerCustomEditors(PropertyEditorRegistry registry) {

    String dateFormat = 'yyyy/MM/dd'
    registry.registerCustomEditor(Date, new CustomDateEditor(new SimpleDateFormat(dateFormat), true))
}
}