猿问

enctype="multipart/form-data" 破坏了我的应用程序

我正在制作简单的 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);


另外,即使我可以修复它,如何对我的书籍实体进行验证,我认为它也会被破坏


泛舟湖上清波郎朗
浏览 91回答 1
1回答

慕妹3146593

我通过将 MultipartResolver bean 添加到我的 Config 来修复 id。&nbsp; &nbsp; @Bean&nbsp; &nbsp; public MultipartResolver multipartResolver(){&nbsp; &nbsp; StandardServletMultipartResolver resolver = new StandardServletMultipartResolver();&nbsp; &nbsp; return resolver;}我还需要将它应用到我的调度员MultipartConfigElement multipartConfig = new&nbsp;MultipartConfigElement(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "c:/temp", 50000000, 50000000, 0);&nbsp; &nbsp; dispatcher.setMultipartConfig(multipartConfig);希望我的解决方案对 smbd 有所帮助。
随时随地看视频慕课网APP

相关分类

Java
我要回答