如果日期无效,Spring mvc Joda 日期时间转换器将失败

2023-11-29

我有一个域对象,我想从包含 Joda DateTime 的 JSP 映射:

public beanClass{
  private Long id;

  @DateTimeFormat
  private DateTime start;

  getters and setters...
}

我在 Spring 中注册了以下转换器:

final class StringToJodaDateTimeConverter<S, T> implements Converter<String, DateTime>    {   

  private static final DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy");

  public DateTime convert(String in) {
     try{
        return fmt.parseDateTime(in);
     }catch(Exception e){
        throw new IllegalArgumentException("Invalid date");
     }
   }
}

Spring 显然在我的验证器类之前点击了转换器,并将用完整的错误填充我的错误消息

无法将 java.lang.String 类型的属性值转换为属性 sampleDate 所需的类型 org.joda.time.DateTime;嵌套异常是 org.springframework.core.convert.ConversionFailedException:无法将值“asdf”从 java.lang.String 类型转换为 org.joda.time.DateTime 类型;嵌套异常是 java.lang.IllegalArgumentException:无效日期

我想要的是从异常中获取“无效日期”消息。

有没有办法获取异常消息“无效日期”而不是显示整个内容?


您应该使用文件 messages.properties 来声明特定信息:

typeMismatch.java.util.Date = Invalid date

当然,您应该在 spring-context.xml 中提供有关此文件的信息

  <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
     <property name="basename" value="/WEB-INF/config/messages"/>
     <property name="defaultEncoding" value="UTF-8"/>         
    </bean>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果日期无效,Spring mvc Joda 日期时间转换器将失败 的相关文章

随机推荐