<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,如需转载请自行联系原作者