2

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

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

4

3 回答 3

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));
}

通常应用程序有不同的要求 - 有些使用本地时间(浏览器特定的东西和用户时区设置可能会起作用),有些不需要存储日期 - 所以最好同时实施日期转换策略在客户端和服务器端。

PS请注意,这Date.parse()也已弃用。

于 2012-11-13T06:35:51.037 回答
0

允许的日期格式可能取决于您当前的语言环境。

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

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

于 2012-11-12T22:23:22.787 回答
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))
}
}
于 2012-11-13T08:12:20.687 回答