自己怎么设置网站,好的网站怎么设计,wordpress发布文章报错,揭阳cms建站模板java与java ee在本文中#xff0c;我们将介绍Java EE MVC中的表单验证。 Java EE MVC与Java Bean验证API#xff08; JSR 303 #xff09;集成在一起#xff0c;这使得添加验证约束变得非常容易。 使用JAX-RS方式进行验证 假设我们有一个小的html表单#xff0c;可用于发… java与java ee 在本文中我们将介绍Java EE MVC中的表单验证。 Java EE MVC与Java Bean验证API JSR 303 集成在一起这使得添加验证约束变得非常容易。 使用JAX-RS方式进行验证 假设我们有一个小的html表单可用于发送联系人消息。 为了表示表单数据我们创建一个小的ContactMessage bean其中包含表单字段和验证约束 public class ContactMessage {FormParam(message)NotBlankSize(max 1000)private String message;// getters / setters
} 在我们的MVC控制器中我们使用BeanParam批注将表单数据转换为ContactMessage对象 Controller
Path(/)
public class ContactController {POSTpublic String formSubmit(Valid BeanParam ContactMessage message) {...}
} 有关BeanParam批注的更多详细信息请参阅博客文章“使用bean参数” 。 通过将Valid批注添加到ContactMessage参数可以启用验证。 如果提交表单并且ContactMessage对象的验证失败则将引发ConstraintViolationException。 在这种情况下不会调用controller方法。 相反可以使用通用的JAX-RS ExceptionMapper处理异常如另一篇文章中所示 Java EE MVC中的全局异常处理 。 这种方法通常适用于标准JAX-RS REST端点。 如果无效数据已传递到服务器我们通常希望在这里返回通用的HTTP 400错误请求状态代码。 在MVC环境中每当传递无效数据时我们都可以使用此行为向用户呈现标准错误页面。 但是这通常不够灵活。 通常我们想返回一个更具体的页面向用户显示错误消息。 使用MvcBinding和BindingResult进行验证 Java EE MVC提供了MvcBinding批注该批注启用了替代的异常处理机制。 可以将MvcBinding与JAX-RS绑定批注例如FormParam一起放在字段和方法参数上 public class ContactMessage {MvcBindingFormParam(message)NotBlankSize(max 1000)private String message;// getters / setters
} 如果注释字段的绑定失败这将告诉Java EE MVC调用控制器方法而不是通用异常处理程序。 要访问绑定信息我们可以将BindingResult对象注入到控制器类中 Controller
Path(/)
public class ContactController {Injectprivate Models models;Injectprivate BindingResult bindingResult;POSTpublic String formSubmit(Valid BeanParam ContactMessage message) {if (bindingResult.isFailed()) {models.put(bindingResult, bindingResult);return /WEB-INF/jsp/contact.jsp;}return /WEB-INF/jsp/success.jsp;}
} 顾名思义我们可以使用注入的BindingResult对象访问控制器方法中的绑定信息。 在此示例中我们只需调用isFailed来检查是否存在绑定问题。 通过将bindingResult添加到模型我们稍后可以在视图中访问它以向用户显示错误消息。 在提交按钮下方显示所有验证错误的简单JSP视图如下所示 form action${mvc.contextPath}/contact methodpostlabelMessage:/labeltextarea namemessage/textareabr/input typesubmit/c:if test${bindingResult.isFailed()}pForm validation failed. Reasons:/pulc:forEach items${bindingResult.allValidationErrors} varvalidationErrorlic:out value${validationError.paramName}: ${validationError.message}//li/c:forEach/ul/c:if
/form结论 使用Java EE MVC进行表单验证非常容易。 可以使用JSR 303 Bean验证批注将验证约束添加到Bean。 MvcBinding允许我们在控制器方法中处理验证错误而不是使用通用的ExceptionMappers。 BindingResult使我们可以访问验证信息。 与往常一样您可以在GitHub上找到示例代码。 翻译自: https://www.javacodegeeks.com/2018/05/java-ee-mvc-handling-validation.htmljava与java ee