6

次のエラーが発生し続けます

org.springframework.web.multipart.support.MissingServletRequestPartException: リクエスト パーツ 'モデル' が見つかりません。

multipart リクエストを spring mvc コントローラーに投稿するとき。

これは要求です:

Accept:application/json, text/javascript, */*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:4394941
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryK4y8t7mg2SNoYxC4
Cookie:SID=091f182f-5534-47c4-b0c1-8ca9c17e1f09
Host:localhost:8080
Origin:http://localhost:8080
Referer:http://localhost:8080/controller/home/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17
X-Requested-With:XMLHttpRequest
Request Payload
------WebKitFormBoundaryK4y8t7mg2SNoYxC4
Content-Disposition: form-data; name="model"

{"name":"kjkjk","description":"kkjkjk"}
------WebKitFormBoundaryK4y8t7mg2SNoYxC4
Content-Disposition: form-data; name="photo"; filename="IMG_1281.JPG"
Content-Type: image/jpeg

コントローラ

@RequestMapping(value = "/t")
    public ResponseEntity<ResponseMessage> t(@CookieValue(value = "SID", required = true) String sessionId, 
            @RequestPart("model") CategoryModel model,
            @RequestPart("photo") MultipartFile file)
    {
    return new ResponseEntity<ResponseMessage>(new ResponseMessage(200, "success"), HttpStatus.OK);
    }

モデル

package bla.bla.bla;

import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import org.codehaus.jackson.annotate.JsonBackReference;
import org.codehaus.jackson.annotate.JsonIgnore;

public class CategoryModel {

    public CategoryModel(String id, String name, String description, CategoryModel parent) {
        super();
        this.name = name;
        this.description = description;
        this.id = id;
        this.parent = parent;
    }

    public CategoryModel(String id, String name, String description, CategoryModel parent, List<CategoryModel> childrens) {
        super();
        this.name = name;
        this.description = description;
        this.id = id;
        this.parent = parent;
        this.childrens = childrens;
    }

    public CategoryModel()
    {

    }
    public String id;
    public String name;
    public String description;
    public String imageUrl; 
    public CategoryModel parent;
    public List<CategoryModel> childrens = new ArrayList<CategoryModel>();
}

コントローラーとエンティティを追加しました。確認して、どこが間違っているのか教えてください。

ありがとう、ジェームズ

4

2 に答える 2

0

http://www.mkyong.com/spring-mvc/spring-mvc-file-upload-example/

ファイル アップロードの依存関係 -> モデル -> ファイル アップロード コントローラー -> ファイル アップロードの検証 -> ページの表示 -> Spring の構成 -> デモ

html

<form:form method="POST" commandName="fileUploadForm"
    enctype="multipart/form-data">

    <form:errors path="*" cssClass="errorblock" element="div" />

    Please select a file to upload : <input type="file" name="file" />
    <input type="submit" value="upload" />
    <span><form:errors path="file" cssClass="error" />
    </span>

</form:form>

pom.xml

        <!-- Apache Commons Upload --> 
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.2.2</version>
</dependency>

<!-- Apache Commons Upload --> 
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>1.3.2</version>
</dependency>

コントローラ

public class FileUploadController extends SimpleFormController{

public FileUploadController(){
    setCommandClass(FileUpload.class);
    setCommandName("fileUploadForm");
}

@Override
protected ModelAndView onSubmit(HttpServletRequest request,
    HttpServletResponse response, Object command, BindException errors)
    throws Exception {

    FileUpload file = (FileUpload)command;

    MultipartFile multipartFile = file.getFile();

    String fileName="";

    if(multipartFile!=null){
        fileName = multipartFile.getOriginalFilename();
        //do whatever you want
    }

    return new ModelAndView("FileUploadSuccess","fileName",fileName);
}

モデル

public class FileUpload{

MultipartFile file;
//getter and setter methods
}

...

input type="file" name="file" == プライベート MultipartFileファイル;

コントローラー -> モデル -> getFile ^^ はい!!!

于 2016-04-26T05:30:19.040 に答える