麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

SpringMVC + Spring + MyBatis 學習筆記:提交數據遭遇基礎類型和日期類型報400錯誤解決方法

2019-11-14 23:33:52
字體:
來源:轉載
供稿:網友
SPRingMVC + Spring + MyBatis 學習筆記:提交數據遭遇基礎類型和日期類型報400錯誤解決方法

系統:WIN8.1

數據庫Oracle 11GR2

開發工具:MyEclipse 8.6

框架:Spring3.2.9、SpringMVC3.2.9、MyBatis3.2.8


使用SpringMVC開發的時候,頁面如果有日期格式的數據,后臺接受也是java.util.Date,則報告400錯誤。下面是解決方案的演示示例:

這個是實體類,里面createDate就是java.util.Date類型

 1 import java.util.Date; 2  3 public class User { 4  5     private int userId; 6     private String userName; 7     private Date createDate; 8      9     public User() {}10 11     public User(int userId, String userName, Date createDate) {12         super();13         this.userId = userId;14         this.userName = userName;15         this.createDate = createDate;16     }17 18     public User(String userName, Date createDate) {19         super();20         this.userName = userName;21         this.createDate = createDate;22     }23 24     public int getUserId() {25         return userId;26     }27 28     public void setUserId(int userId) {29         this.userId = userId;30     }31 32     public String getUserName() {33         return userName;34     }35 36     public void setUserName(String userName) {37         this.userName = userName;38     }39 40     public Date getCreateDate() {41         return createDate;42     }43 44     public void setCreateDate(Date createDate) {45         this.createDate = createDate;46     }47 48     @Override49     public String toString() {50         return "User [createDate=" + createDate + ", userId=" + userId51                 + ", userName=" + userName + "]";52     }53 }

頁面代碼

1   <form action="regUser" method="post">2         userName:<input type="text" name="userName"/><br>3         createDate:<input type="text" name="createDate"/><br>4         double類型:<input type="text" name="dd"/><br>5         <input type="submit" value="注冊">6     </form>

因為對于原生基本類型的form表單綁定,會出錯。需要指定具體的類型編輯器。用法如下:首先在BaseController中增加方法initBinder,并使用注解@InitBinder標注,那么spring mvc在綁定表單之前,都會先注冊這些編輯器。剩下的控制器都繼承該類。CustomDateEditor spring自己已經提供了。代碼如下:

 1 import java.text.SimpleDateFormat; 2 import java.util.Date; 3  4 import org.springframework.beans.propertyeditors.CustomDateEditor; 5 import org.springframework.stereotype.Controller; 6 import org.springframework.web.bind.WebDataBinder; 7 import org.springframework.web.bind.annotation.InitBinder; 8  9 import sun.beans.editors.DoubleEditor;10 import sun.beans.editors.FloatEditor;11 import sun.beans.editors.IntEditor;12 import sun.beans.editors.LongEditor;13 14 @Controller15 public class BaseController {16 17     @InitBinder    18     public void initBinder(WebDataBinder binder) {    19 20         binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); 21         binder.registerCustomEditor(int.class, new IntEditor());22         binder.registerCustomEditor(long.class, new LongEditor());  23         binder.registerCustomEditor(double.class, new DoubleEditor());  24         binder.registerCustomEditor(float.class, new FloatEditor());  25     }26     27     28 }

上面的代碼不僅僅有日期格式的編輯器,還有基礎類型的編輯器,這樣就解決了SpringMVC中controller方法接受參數的時候,基礎類型報錯的問題了。

下面是測試用代碼,繼承BaseController之后就可以直接運行了。接受的參數有實體類和基礎類型。

 1 import org.springframework.stereotype.Controller; 2 import org.springframework.web.bind.annotation.RequestMapping; 3  4 import com.kickstarter.entity.User; 5  6 @Controller("userController") 7 public class UserController extends BaseController{ 8  9     @RequestMapping(value="regUser")10     public String dateTest(User user ,double dd){11         12         System.out.println( user.toString() );13         System.out.println( dd );14         return "index"; 15     }16 }

以上,問題解決。然后我們切換第二種方式,刪除 BaseController這個類,直接在User實體類中的createDate字段上加上注解,注意第10行代碼:

 1 import java.util.Date; 2  3 import org.springframework.format.annotation.DateTimeFormat; 4  5 public class User { 6  7     private int userId; 8     private String userName; 9     10     @DateTimeFormat(pattern="yyyy-MM-dd")11     private Date createDate;12     13     public User() {}14 15     public User(int userId, String userName, Date createDate) {16         super();17         this.userId = userId;18         this.userName = userName;19         this.createDate = createDate;20     }21 22     public User(String userName, Date createDate) {23         super();24         this.userName = userName;25         this.createDate = createDate;26     }27 28     public int getUserId() {29         return userId;30     }31 32     public void setUserId(int userId) {33         this.userId = userId;34     }35 36     public String getUserName() {37         return userName;38     }39 40     public void setUserName(String userName) {41         this.userName = userName;42     }43 44     public Date getCreateDate() {45         return createDate;46     }47 48     public void setCreateDate(Date createDate) {49         this.createDate = createDate;50     }51 52     @Override53     public String toString() {54         return "User [createDate=" + createDate + ", userId=" + userId55                 + ", userName=" + userName + "]";56     }57 }

這樣也可以解決日期格式報400問題。而且不管頁面是否有數據都可以正常使用。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久精品视频黄色 | 精品中文字幕在线播放 | 一区二区三区无码高清视频 | 精品中文字幕视频 | 爱性久久久久久久 | 欧美一区2区三区4区公司二百 | 国产亚洲美女精品久久久2020 | 一级网站 | 在线中文字幕不卡 | 亚洲av一级毛片特黄大片 | 一级全毛片 | 精品偷拍久久 | 黄色大片在线免费看 | 一区二区三区视频在线观看 | 精品一区二区中文字幕 | freexxxhd喷水 | 91久久夜色精品国产网站 | 成年片在线观看 | 精品一区二区三区日本 | 九九热视频免费观看 | 91一区二区三区久久久久国产乱 | 黄色网址免费在线播放 | 成人在线视频精品 | 黄色免费在线视频网站 | 91国内精品久久久久免费影院 | www.成人免费| 欧美日韩中文字幕在线 | 最新中文在线视频 | 亚洲国产高清视频 | 欧美精品国产综合久久 | 精品亚洲va在线va天堂资源站 | 国产精品视频专区 | 午夜视频亚洲 | 国产精品久久久久久影视 | 一级空姐毛片 | 精品久久久久久久久久久久久 | 在线亚洲免费 | 日本网站在线播放 | 日韩高清电影 | 国产91porn | 免费久久久 |