当前位置: 首页 > 知识库问答 >
问题:

Spring 3通过文件上传自动表单字段验证

虞承泽
2023-03-14

我将JSR 303验证与hibernate validator一起使用,通过在控制器方法上指定@Valid来自动验证字段。验证运行良好。我已经在表单中添加了一个上传字段,并添加了一个@ request param(“file”)作为多文件文件。现在,只有在提交时所有字段都有效,否则我会得到一个404(错误的请求)。如果我删除@Valid注释,我会得到javax . validation . constraintviolationexception,其中所有验证违规的状态都是500。

我正在使用 Spring 3.2

我的表格:

    <form action="#springUrl("/admin/stores/save")" method="POST" enctype="multipart/form-data">
Name: 
  #springBind( "store.name" )
  <input type="text" 
    name="${status.expression}" 
    value="$!status.value" /><br>
......
   <input type="file" name="file" accept="image/*">

  <input type="submit" value="submit"/>
</form>

控制器:

@RequestMapping(value="/save", method = RequestMethod.POST)
    @Transactional
    public String save(@Valid @ModelAttribute Store store, @RequestParam("file") MultipartFile file, BindingResult bindingResult, ModelMap model) {
        if (bindingResult.hasErrors()) {
            model.addAttribute("message", "Failed");
            model.addAttribute("store", store);
            return "admin/stores/form";
        } else {
                .....

共有1个答案

冀冯浩
2023-03-14

您的问题在方法参数顺序中。@ModelAttribute后必须跟 BindingResult 参数。查看 Spring 文档并查看示例 17.1。绑定结果和@ModelAttribute的顺序无效。

.如果多部分文件是表单类(存储)的一部分,您还应该将其添加到表单类(商店)。

Store {

    /* Your other fields */

    @NotNull
    private  MultipartFile file;

    public MultipartFile getFile() {
        return file;
    }

    public void setFile(MultipartFile file) {
        this.file= file;
    }
}
 类似资料:
  • 问题内容: 我有一个带有以下输入标记的HTML页面: 单击页面上的按钮将打开文件对话框。如果要进行实际的上载,则需要另一个按钮来单击(提交),因为此输入文件按钮仅用于提供文件的路径。 选择文件后,是否可以单击浏览按钮,选择文件并立即启动上传功能?如果是,任何人都可以提供代码段吗?谢谢。 问题答案: 如果您希望在用户选择之后提交表单,则只需添加

  • 问题内容: 我正在尝试验证从后端端点给我的一些表单字段… 因此基本上,元素是在内动态创建的。因此,属性也被动态添加,如,等… 但是,由于该属性是动态添加的,因此当我尝试验证它时,例如: 它不返回任何内容,因为在这一点上,它不知道是什么。 我创建了一个jsFiddle来演示该问题:http : //jsfiddle.net/peduarte/HB7LU/1889/ 任何帮助或建议将不胜感激! FAN

  • 问题内容: 选择图像,doc或pdf后,我想将它们通过okhttp3。如何进行此操作? 并在okhttp 3中 显示的错误是 谢谢。 问题答案: 所以我自己回答这个问题。 因此,我首先将输出流打开到一个临时文件。 扩展名取决于mime类型。您可以通过以下方式找到mime类型 现在从文件读取并将其内容写入临时文件 现在写入文件 最后 成功之后的最后

  • 问题内容: 我使用2个文件index.js,upload.php尝试通过ajax上传文件(img),如果成功追加到div 。 但是它不起作用,有几个问题,下面我的代码有什么建议吗? 谢谢。 upload.php 1. 还需要添加吗? 2. 并检查$ _FILES的大小或tmp_name是否仍使用? index.js 3.这几行是对的吗? 4.我错过或错了什么吗? 问题答案: 在其构造函数中接受一个

  • 问题内容: 我想使用将文件(特别是图像)上传到REST Server 。我已经导入/添加了构建路径和。而且我在堆栈跟踪中收到以下错误。 这有效吗? HTTP POST代码 堆栈跟踪 问题答案: 您似乎缺少依赖项。 我有,,并用和在我的类路径罐子。 我也使用而不是使用header属性。 查看Internet媒体类型以了解更多详细信息

  • 我有一个问题,通过我的php网站上传一个mp3文件。它允许我加载2MB以下的所有内容,但没有超过。它以前工作过 托管提供商还增加了fastcgi超时限制。htaccess文件,并添加以下内容:php\u value max\u execution\u time 300, 我们还增加了fastcgi超时限制,并添加了一个。htaccess文件:php\u值上传\u最大\u文件大小20M php\u值