【问题标题】:How to submit a form with no file uploaded spring mvc如何提交没有上传文件的表单spring mvc
【发布时间】:2015-04-19 18:25:51
【问题描述】:

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

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

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

这是一些编码:

在我的控制器类中:

@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) 以查看它是否调用所需的控制器?
  • 好提醒!有用!将此作为您的最终答案发布,我会接受 :) 谢谢
  • 作为答案添加。很高兴我能帮上忙。

标签: jquery ajax spring spring-mvc file-upload


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多