一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 解決springmvc關于前臺日期作為實體類對象參數類型轉換錯誤的問題

解決springmvc關于前臺日期作為實體類對象參數類型轉換錯誤的問題

2020-11-24 14:56Java教程網 Java教程

下面小編就為大家帶來一篇解決springmvc關于前臺日期作為實體類對象參數類型轉換錯誤的問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

頁面報錯:

解決springmvc關于前臺日期作為實體類對象參數類型轉換錯誤的問題

后臺錯誤:

Field error in object 'user' on field 'birthday': rejected value [2013-06-24]; codes [typeMismatch.user.birthday,typeMismatch.birthday,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.birthday,birthday]; arguments []; default message [birthday]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'birthday'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type java.util.Date for value '2013-06-24'; nested exception is java.lang.IllegalArgumentException]

解決方案1:在對應的實體類屬性上加入 @DateTimeFormat(pattern = "yyyy-MM-dd")

解決springmvc關于前臺日期作為實體類對象參數類型轉換錯誤的問題

解決方案2:不使用 <mvc:annotation-driven/>注解

使用 DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 注解驅動配置

在對應的實體類屬性上加入 @DateTimeFormat(pattern = "yyyy-MM-dd")

?
1
2
3
4
5
6
7
8
9
10
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
      <property name="webBindingInitializer">
        <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
          <property name="conversionService">
            <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/>
          </property>
        </bean>
      </property>
    </bean>

3、使用 @InitBinder注解,注冊一個父類Controller(BaseController),其他Controller去繼承它

?
1
2
3
4
Springmvc配置文件
 
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
?
1
2
3
4
5
6
7
8
9
10
11
public class BaseController {
  @InitBinder
  public void initBinder(WebDataBinder binder) {
    /**
     * 第一種方式:使用WebDataBinder注冊一個自定義的編輯器,編輯器是日期類型
     * 使用自定義的日期編輯器,日期格式:yyyy-MM-dd,第二個參數為是否為空  true代表可以為空
     */
    binder.registerCustomEditor(Date.class, new CustomDateEditor(
        new SimpleDateFormat("yyyy-MM-dd"), true));
  }
}

或者使用下面的方式

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class BaseController {
  @InitBinder
  public void initBinder(WebDataBinder binder) {
    /**
     * 方式二:使用WebDataBinder注冊一個自定義的編輯器,編輯器是日期類型
     * 使用屬性編輯器實現:重載setAsText,getAsText
     */
    binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
 
      @Override
      public String getAsText() {
        return new SimpleDateFormat("yyyy-MM-dd")
            .format((Date) getValue());
      }
 
      @Override
      public void setAsText(String text) {
        try {
          setValue(new SimpleDateFormat("yyyy-MM-dd").parse(text));
        } catch (Exception e) {
          e.printStackTrace();
          setValue(null);
        }
      }
 
    });
  }
}

以上這篇解決springmvc關于前臺日期作為實體類對象參數類型轉換錯誤的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费欧美一级片 | 午夜视频一区二区三区 | 国产乱码在线精品可播放 | 欧美一级片在线免费观看 | 美女被狂揉下部羞羞动漫 | 国产手机在线观看 | bban女同系列022在线观看 | 国产美女久久精品香蕉69 | 亚洲精品国产一区二区三区在 | 欧洲兽皇| 日本在线一区 | 青青成人| 婷婷久久综合九色综合九七 | 亚洲 欧美 在线观看 | 天天摸天天碰色综合网 | 2022最新国产在线不卡a | 天天操天天舔 | 大香人蕉免费视频75 | 爱爱亚洲 | 亚洲国产精品久久网午夜 | 欧美专区亚洲 | 99色在线观看| 国色天香社区视频免费高清在线观看 | 国产精品自拍一区 | 性一交一乱一伧老太 | 日日网| 女人麻豆国产香蕉久久精品 | xxx88视频在线观看 | 亚洲AV无码国产精品色午夜情 | 二次元美女扒开内裤露尿口 | 日韩播放| 亚洲精品www久久久久久久软件 | 亚洲国产成人精品不卡青青草原 | 亚洲国产剧情中文视频在线 | 无遮挡h肉动漫在线观看电车 | 午夜私人影院在线观看 视频 | 国产精品一区二区三区免费视频 | 国产一区在线播放 | 国内在线播放 | chinese男男gay | 日韩欧美一区二区三区 |