<code>@RequestMapping</code><code>(</code><code>"/detail"</code><code>)</code>
<code>public</code> <code>String detail(</code><code>@RequestParam</code><code>(</code><code>"id"</code><code>) </code><code>int</code> <code>id,Model model){</code>
<code> </code><code>Category category=</code><code>new</code> <code>Category();</code>
<code> </code><code>category.setCateId(id);</code>
<code> </code><code>category.setCateName(</code><code>"測試分類"</code><code>+id);</code>
<code> </code><code>model.addAttribute(</code><code>"cate"</code><code>,category);</code>
<code> </code><code>return</code> <code>"detail.html"</code><code>;</code>
<code>}</code>
<code>@RequestMapping</code><code>(value = </code><code>"/edit/{id}"</code><code>,method = RequestMethod.GET)</code>
<code>public</code> <code>String edit(</code><code>@PathVariable</code><code>(</code><code>"id"</code><code>) </code><code>int</code> <code>id,Model model) {</code>
<code> </code><code>//todo:get category from db</code>
<code> </code><code>return</code> <code>"edit.html"</code><code>;</code>
1.首先定義實體類。
<code>public</code> <code>class</code> <code>Category{</code>
<code> </code><code>public</code> <code>Category(){}</code>
<code> </code><code>@NotNull</code>
<code> </code><code>@Min</code><code>(</code><code>1</code><code>)</code>
<code> </code><code>private</code> <code>int</code> <code>cateId;</code>
<code> </code><code>private</code> <code>String cateName;</code>
<code> </code><code>public</code> <code>int</code> <code>getCateId() {</code>
<code> </code><code>return</code> <code>cateId;</code>
<code> </code><code>}</code>
<code> </code><code>public</code> <code>void</code> <code>setCateId(</code><code>int</code> <code>cateId) {</code>
<code> </code><code>this</code><code>.cateId = cateId;</code>
<code> </code><code>public</code> <code>String getCateName() {</code>
<code> </code><code>return</code> <code>cateName;</code>
<code> </code><code>public</code> <code>void</code> <code>setCateName(String cateName) {</code>
<code> </code><code>this</code><code>.cateName = cateName;</code>
2.表單edit.html
<code><form method=</code><code>"post"</code> <code>th:object=</code><code>"${cate}"</code> <code>th:action=</code><code>"@{/category/save}"</code> <code>enctype=</code><code>"multipart/form-data"</code><code>></code>
<code> </code><code><table></code>
<code> </code><code><tr></code>
<code> </code><code><td>id:</td></code>
<code> </code><code><td><input type=</code><code>"text"</code> <code>th:field=</code><code>"*{cateId}"</code><code>></td></code>
<code> </code><code></tr></code>
<code> </code><code><td>name:</td></code>
<code> </code><code><td><input type=</code><code>"text"</code> <code>th:field=</code><code>"*{cateName}"</code><code>></td></code>
<code> </code><code></tr> </code>
<code> </code><code><td colspan=</code><code>"2"</code><code>></code>
<code> </code><code><input type=</code><code>"submit"</code> <code>value=</code><code>"送出"</code><code>></code>
<code> </code><code></td></code>
<code> </code><code></table></code>
<code> </code><code></form></code>
3.通過給action方法的參數添加@Valid注解,這會告知Spring,需要確定這個對象滿足校驗限制
<code>@RequestMapping</code><code>(value = </code><code>"/save"</code><code>,method = RequestMethod.POST)</code>
<code>public</code> <code>String save( </code><code>@Valid</code> <code>Category category, Errors errors) </code><code>throws</code> <code>IOException {...}</code>
錯誤可以通過Errors對象進行通路,現在這個對象已作為processRegistration()方法的參數。(很重要一點需要注意,Errors參數要緊跟在帶有@Valid注解的參數後面,@Valid注解所标注的就是要檢驗的參數。
1.設定web.xml配置
web.xml配置multipart-config
<code><servlet></code>
<code> </code><code><servlet-name>springmvc</servlet-name></code>
<code> </code><code><servlet-</code><code>class</code><code>>org.springframework.web.servlet.DispatcherServlet</servlet-</code><code>class</code><code>></code>
<code> </code><code><load-on-startup></code><code>1</code><code></load-on-startup></code>
<code> </code><code><multipart-config></code>
<code> </code><code><location></location></code>
<code> </code><code><max-file-size></code><code>2097152</code><code></max-file-size></code>
<code> </code><code><max-request-size></code><code>4194304</code><code></max-request-size></code>
<code> </code><code></multipart-config></code>
<code> </code><code></servlet></code>
2.from表單
form要将enctype屬性設定為multipart/form-data,這就告訴浏覽器以multipart資料的形式送出表單
input标簽要把type設定為file,這能夠讓使用者選擇要上傳的圖檔檔案。accept屬性用來将檔案類型限制為JPEG、PNG以及GIF圖檔。根據其name屬性,圖檔資料将會發送到multipart請求中的profilePicture part之中
<code> </code><code><td>file:</td></code>
<code> </code><code><td></code>
<code> </code><code><input type=</code><code>"file"</code> <code>accept=</code><code>"image/jpeg,image/png,image/jpg"</code> <code>name=</code><code>"picture"</code><code>></code>
3.controller:
@RequestPart :圖檔對應的參數要添加該注解
spring提供了Multipart MultipartFile對象,它為處理multipart資料提供了内容更為豐富的對象
transferTo() ,它能夠幫助我們将上傳的檔案寫入到檔案系統中
<code> </code><code>public</code> <code>String save(</code><code>@RequestPart</code><code>(</code><code>"picture"</code><code>) MultipartFile picture, </code><code>@Valid</code> <code>Category category, Errors errors) </code><code>throws</code> <code>IOException {</code>
<code> </code><code>//todo:save file to image server</code>
<code> </code><code>String filepath=request.getRealPath(</code><code>"/"</code><code>)+</code><code>"upload/"</code><code>+picture.getOriginalFilename();</code>
<code> </code><code>picture.transferTo(</code><code>new</code> <code>File(filepath));</code>
<code> </code><code>if</code><code>(errors.hasErrors()){</code>
<code> </code><code>return</code> <code>"edit.html"</code><code>;</code>
<code> </code><code>}</code>
<code> </code><code>//todo:save category to db</code>
<code> </code><code>return</code> <code>"redirect:/category/detail?id="</code><code>+category.getCateId();</code>
本文轉自 陳敬(Cathy) 部落格園部落格,原文連結:http://www.cnblogs.com/janes/p/6933723.html,如需轉載請自行聯系原作者