如何在没有上传文件的情况下提交表单 spring mvc

How to submit a form with no file uploaded spring mvc

我有一个表单,其中有一些输入文本字段和一个输入文件字段,用于在我的数据库中注册一些条目。

现在我正在创建另一个表单来编辑同一个条目。我从数据库中检索数据并填写另一个表格,该表格具有与第一个表格相同的字段。不过,我没有填写输入文件值,因为出于安全原因,我无法以编程方式完成。

所以我让用户编辑他想要的任何内容并更新该条目。但是,如果用户不更改文件输入字段,我的代码将提交带有空文件输入的表单,因此我遇到 400(错误请求)错误,因为我的 ajax 请求没有找到我的 servlet .

这是一些编码:

在我的控制器中class:

@RequestMapping(value = RestUriConstants.SUBMETER, method = RequestMethod.POST)
public @ResponseBody JsonResponse submeter(@RequestPart("exercicio") final Exercicio exercicio,
            @RequestPart("file") final MultipartFile file) {
            ...
}

和 Ajax 请求:

    var exercicioObject = new Object();
    exercicioObject.id = id;
    exercicioObject.nome = nome;
    exercicioObject.grupo = grupo;

    var formData = new FormData();
    formData.append("file", file.files[0]);
    formData.append('exercicio', new Blob([JSON.stringify(exercicioObject)], {
           type : "application/json"
    }));

            $.ajax({
                url : '/Project/exercicio/submeter',
                type : 'POST',
                dataType : 'text',
                data : formData,
                 processData : false,
                contentType : false
            });

如您所见,我正在设置一个 Json 对象,该对象将作为 Exercicio 对象传递到服务器,文件将作为 MultipartFile 对象传递。

因为我没有设置任何 MultipartFile 对象,我认为 Spring 没有找到我的 URL,它需要两个参数(Exercicio 和 MultipartFile),但我不知道如何传递MultipartFile 上的任何内容只是为了 Spring 将我的请求重定向到服务器中的正确方法。

不通过时请尝试使用@RequestPart(required=false)忽略。