我正在制作简单的 Spring MVC 应用程序,我也在阅读 Spring in Action 第 3 版。我来到了文件上传的章节。为此,我需要将 enctype="multipart/form-data" 添加到 < sf:form > 标签。当我这样做时,我的 sf:form 停止工作,所以我在这个网站上找到了如何修复它的问题,并用 <form> 替换了 <sf:form>,现在它完全坏了,我不知道如何修复它,当我制作发布请求我收到错误必需的字符串参数“名称”不存在我的表格(简介省略): <div class="center"> <h1>Add a book!</h1> <fieldset> <form method="post" action="/books" acceptCharset="utf-8" enctype="multipart/form-data"> <table> <tr> <td>Name</td> <td><input type="text" name="name"> <sf:errors path="name" cssClass="isa_error"/></td> </tr> <tr> <td>Desc</td><td><textarea cols="50" rows="11" name="desc">Опис</textarea></td> </tr> <tr> <td>Author</td> <td><input name="aut" type="text"> <sf:errors path="aut" cssClass="isa_error"/></td> </tr> <tr> <td>Year</td> <td><input name="year" type="text"><sf:errors path="year" cssClass="isa_error"/></td> </tr> <tr> <td>Price</td> <td><input name="price" type="text"> <sf:errors path="price" cssClass="isa_error"/></td> </tr> <tr> <td><input type="file" name="image" ></td> </tr> <tr> <td><input type="submit" value="add"></td> </tr> </table></form><p><form action="/books" method="get" > <input type="submit" value="Повернутися"></form></p></fieldset>和映射: @PostMapping("/books")public String add( @RequestParam("name") String name,@RequestParam("desc") String desc,@RequestParam("book") String aut,@RequestParam("year") String year,@RequestParam("price") int price, BindingResult result, @RequestParam(name = "image", required = false) MultipartFile image){ if (result.hasErrors()) return "addBook"; Book book = new Book(); book.setAut(aut); book.setName(name); book.setDesc(desc); book.setYear(year); book.setPrice(price);另外,即使我可以修复它,如何对我的书籍实体进行验证,我认为它也会被破坏
1 回答

慕妹3146593
TA贡献1820条经验 获得超9个赞
我通过将 MultipartResolver bean 添加到我的 Config 来修复 id。
@Bean
public MultipartResolver multipartResolver(){
StandardServletMultipartResolver resolver = new StandardServletMultipartResolver();
return resolver;
}
我还需要将它应用到我的调度员
MultipartConfigElement multipartConfig = new
MultipartConfigElement(
"c:/temp", 50000000, 50000000, 0);
dispatcher.setMultipartConfig(multipartConfig);
希望我的解决方案对 smbd 有所帮助。
添加回答
举报
0/150
提交
取消