我必须接受由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客户端提交到/ submit API,Spring Boot似乎没有抛出任何类型的验证异常/错误请求错误。
相反,它继续使用getName()
函数。
如果缺少提交模型中的任何参数,我如何确保抛出异常?
不应该@Valid
成为实现这一目标的人吗?
谢谢!
答案 0 :(得分: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()
}
这应该适合你。