JakartaEE 10 MVC中@FormParam参数验证未触发如何解决?
问题:Jakarta MVC(Eclipse Krazo)表单验证不触发
项目背景
我有一个包含HTML页面和控制器类的Java Web项目(存在设置资源路径为/resources的REST配置类,但与问题无关)。
HTML页面代码
<html> <head> <title>Start Page</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h1>Hello World!</h1> <form action="resources/postman" method="POST"> <label for="ageInput">Age:</label> <input type="number" id="ageInput" name="age"/><br/><br/> <input type="submit" value="Submit"/> </form> </body> </html>
初始控制器代码
@Controller @Path("postman") public class PostController { @MvcBinding @FormParam("age") @Min(18) private int age; @Inject private BindingResult bindingResult; @Inject private Models models; @POST public String processForm() { if (bindingResult.isFailed()) { models.put("errors", bindingResult.getAllMessages()); return "fail.jsp"; } return "success.jsp"; } }
问题现象
无论在ageInput中输入负数或小于18的正数,验证始终未触发,请求总是跳转到success.jsp。使用Eclipse Krazo作为Jakarta MVC API的实现,如何正确触发验证?
解决方法
经测试,必须添加@Valid注解才能触发参数验证,修改后的控制器方法如下,可正常实现年龄校验:
@POST public String processForm( @Valid @FormParam("age") @Min(18) @MvcBinding int age) { if (bindingResult.isFailed()) { return "fail.jsp"; } return "success.jsp"; }
内容的提问来源于stack exchange,提问作者zajer
相关产品推荐
相关产品推荐

