2017-07-15 50 views
0

我必须接受由JSON和多个文件组成的多部分表单数据并将其传递给某些第三方API。当任何请求参数丢失/无效时抛出错误

目前,我已经创建了一个成分作为

@Component 
public class Submit{ 
    private Multipart file; 
    private String json; 
    //getters setters 
} 

控制器看起来像

@Controller 
{ 
    //some code 
    @PostMapping("/submit") 
    public void post(@ModelAttribute @Valid Submit submit) throws Exception{ 
    getName() 
    } 
} 

当一个请求,不具有所有的参数,即文件 & JSON,由从Postman客户端到/提交API,Spring Boot似乎不会引发任何类型的验证异常/错误请求错误。

取而代之的是getName()函数。

如何确保在提交模型中的任何参数缺失时引发异常?

不应该@Valid是负责使这种情况发生的人吗?

谢谢!

+0

你没有做任何验证......你说这应该是有效的,但你不是说它应该验证什么...... –

+0

同意。 @Notnull失踪 – user1477054

回答

0

使用注释和BindingResult。 在您提交类别:

import javax.validation.constraints.NotNull; 
public class Submit{ 
    @NotNull 
    private Multipart file; 
    @NotNull 
    private String json; 
    //getters setters 
} 

在POST方法您必须提供BindingResult。

import org.springframework.validation.BindingResult; 
@PostMapping("/submit") 
public void post(@ModelAttribute @Valid Submit submit, BindingResult bindingResult, HttpServletResponse response) throws Exception{ 
    if (bindingResult.hasFieldErrors()){ 
    response.setStatus(HttpServletResponse.SC_BAD_REQUEST); 
    return; 
    } 
    getName() 
} 

这应该适合你。

+0

谢谢!这有帮助! – user1477054

相关问题