Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SpringMVC设置输入文本的日期格式_Java_Spring_Spring Mvc - Fatal编程技术网

Java 使用SpringMVC设置输入文本的日期格式

Java 使用SpringMVC设置输入文本的日期格式,java,spring,spring-mvc,Java,Spring,Spring Mvc,如何使用SpringMVC设置文本字段中的格式 我正在使用Spring表单标记库和input标记 我现在得到的是这样的周一5月28日11:09:28 CEST 2012 我想以dd/MM/yyyy格式显示日期。在yr控制器中注册日期编辑器: @InitBinder protected void initBinder(WebDataBinder binder) { binder.registerCustomEditor(LocalDate.class, new LocalDateEdito

如何使用SpringMVC设置文本字段中的格式

我正在使用Spring表单标记库和
input
标记

我现在得到的是这样的
周一5月28日11:09:28 CEST 2012


我想以
dd/MM/yyyy
格式显示日期。

在yr控制器中注册日期编辑器:

@InitBinder
protected void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(LocalDate.class, new LocalDateEditor());
}
然后数据编辑器本身可以如下所示:

public class LocalDateEditor extends PropertyEditorSupport{

 @Override
 public void setAsText(String text) throws IllegalArgumentException{
   setValue(Joda.getLocalDateFromddMMMyyyy(text));
 }

 @Override
 public String getAsText() throws IllegalArgumentException {
   return Joda.getStringFromLocalDate((LocalDate) getValue());
 }
}

我正在使用我自己的抽象实用程序类(Joda)解析日期,事实上,LocalDates from-推荐作为标准java日期/日历是一个讨厌的东西,imho。但是你应该明白。另外,您可以注册一个全局编辑器,这样您就不必在每个控制器上都注册了(我不记得是怎么注册的)。

完成!我刚刚将此方法添加到我的控制器类:

@InitBinder
protected void initBinder(WebDataBinder binder) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    binder.registerCustomEditor(Date.class, new CustomDateEditor(
            dateFormat, false));
}

如果希望格式化所有日期,而不必在每个控制器中重复相同的代码,则可以在带有注释的类中创建全局InitBinder

台阶 1。创建一个DateEditor类,用于格式化日期,如下所示:

    public class DateEditor extends PropertyEditorSupport {

    public void setAsText(String value) {
      try {
        setValue(new SimpleDateFormat("dd/MM/yyyy").parse(value));
      } catch(ParseException e) {
        setValue(null);
      }
    }

    public String getAsText() {
      String s = "";
      if (getValue() != null) {
         s = new SimpleDateFormat("dd/MM/yyyy").format((Date) getValue());
      }
      return s;
    }
2.创建一个用@ControllerAdvice注释的类(我称之为GlobalBindingInitializer):

3.在Spring MVC配置文件(例如webmvc config.xml)中添加允许Spring扫描创建GlobalBindingInitializer类的包的行。例如,如果您在org.example.common包中创建了GlobalBindingInitializer:

    <context:component-scan base-package="org.example.common" />

完了

来源:

  • (我的博客)
  • 个人经历

谢谢!这肯定比我的解决方案要好。@davioooh Spring 3.0+?这是相关的一章,我认为“使用propertyregistars”展示了如何做Globallyes,我使用的是Spring3.1,但我对它还是新手。。。(和一般的Spring框架…)这里如何设置全局编辑器:非常有用!
    <context:component-scan base-package="org.example.common" />