简体   繁体   English

enctype =“ multipart / form-data”破坏了我的应用

[英]enctype=“multipart/form-data” destroyed my app

Im making simple Spring MVC app, also I'm reading Spring in Action 3rd edition. 我正在制作简单的Spring MVC应用程序,也在阅读Spring in Action 3rd Edition。 I came to the chapter with file uploading. 我参加了有关文件上传的章节。 For this I need to add enctype="multipart/form-data" to < sf:form > tag. 为此,我需要在<sf:form>标记中添加enctype =“ multipart / form-data”。 When i did it my sf:form stoped working so i found how to fix it question on this web site and replaced < sf:form > by < form >, now its totally broken and i dont know how to fix it, when i make post request i get eror 当我这样做时,我的sf:form停止工作,所以我在此网站上找到了如何解决它的问题 ,并用<form>替换了<sf:form>,现在它完全坏了,当我制作时我不知道如何解决它发布请求我变得错误

Required String parameter 'name' is not present 必需的字符串参数“名称”不存在

My form (introduction omited ) : 我的表格(省略介绍):

 <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>

And mapping : 并映射:

  @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);

         service.add(book);
        try {
            if (!image.isEmpty()) {
                validateImg(image);

            }
        } catch (IOException ex){
            result.reject(ex.getMessage());
            return "books";
        }

         return "redirect:/books";
}
@GetMapping(value = "/books", params = "new")
public String addBook(Model model){
 model.addAttribute("book",new Book());
 return "addBook";
}

Also, even if i can fix it, how to make validation to my book entity i think it will be broken too 另外,即使我可以修复它,如何对我的图书实体进行验证,我也认为它也会被破坏

Entity :: 实体 ::

      @Table(name = "library")
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idLibrary")
private int id;
@Column(name = "bookName")
@Size(min = 3,message = "Назва має складатися мінімум з 3 букв")
@NotEmpty
private String name;
@NotEmpty(message = "Не можу бути пустим!")
@Column(name = "Author")
private String aut;
@Column(name = "Descriptions")
private String desc;
@Column(name = "Year")
@NotEmpty(message = "Не може бути пустим!")
@Size(min =1,max=4, message = "Некорректний рік")
private String year;
@Column(name = "Price")
@NotNull(message = "Не можу бути пустим!")
@NotNegative(message = "Від'ємна ціна!")
private int price;

And getters/setters (NotNegative is my custom annotation) 和getters / setters(NotNegative是我的自定义注释)

I fixed id by adding an MultipartResolver bean to my Config. 我通过将MultipartResolver bean添加到Config中来修复ID。

    @Bean
    public MultipartResolver multipartResolver(){
    StandardServletMultipartResolver resolver = new StandardServletMultipartResolver();
    return resolver;
}

Also i needed to apply it to my dispatcher 我也需要将其应用于我的调度员

MultipartConfigElement multipartConfig = new 
MultipartConfigElement(
            "c:/temp", 50000000, 50000000, 0);
    dispatcher.setMultipartConfig(multipartConfig);

hope my solution will help to smbd. 希望我的解决方案对smbd有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 enctype multipart/form-data 在多数据类型表单中的使用 - Usage of enctype multipart/form-data in multi data type form h:form enctype =“ multipart / form-data”不执行任何操作 - h:form enctype=“multipart/form-data” not firing any action 使用enctype =“ multipart / form-data”将选定的图像获取到控制器类吗? - Get selected image to Controller Class with enctype=“multipart/form-data”? 了解Spring MVC中的enctype = multipart / form-data的工作 - Understanding working of enctype = multipart/form-data in spring mvc 在 enctype=&quot;multipart/form-data&quot; 请求不起作用之后 - after enctype="multipart/form-data" request not working 使用 enctype=multipart/form-data 上传文件时出错,错误是上传的文件不是 multipart - error while file uploading using enctype=multipart/form-data , the error is the file bring uploaded is not multipart 尽管我写了“enctype=&quot;multipart/form-data”,但发生错误“当前请求不是多部分请求” - Although I wrote 'enctype="multipart/form-data', ERROR 'Current request is not a multipart request' happen 当提交的表单具有属性 enctype=&quot;multipart/form-data&quot; 时,如何在控制器中获取表单数据? - How to get form data in controller when the form that was submitted has the attribute enctype="multipart/form-data"? 使用enctype =“multipart / form-data”的表单会导致访问隐藏字段的问题 - Does form with enctype=“multipart/form-data” cause problems accessing a hidden field 如何在同一个jsp页面中查看jsp表单请求提交? (ENCTYPE =“多部分/格式数据”) - How can i check jsp form request submit in same jsp page? (enctype=“multipart/form-data”)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM