一、注解的定义与使用
非空校验注解可以指定被注解字段不能为空,其定义如下:
public @interface NotEmpty { }
使用非空校验注解需要在需要校验的字段上添加@NotEmpty注解,代码示例:
public class User { @NotEmpty private String username; private String password; //... }
在上面的代码中,对username字段添加了@NotEmpty注解。
二、校验方法的实现
校验方法的实现需要使用反射和注解技术,代码示例:
public static boolean validate(Object object) { // 获取object的Class对象 Class clazz = object.getClass(); // 获取Class对象中的所有字段 Field[] fields = clazz.getDeclaredFields(); // 遍历所有字段,查找被@NotEmpty注解标记的字段 for (Field field : fields) { if (field.isAnnotationPresent(NotEmpty.class)) { try { // 设置字段可访问 field.setAccessible(true); // 获取字段的值 Object value = field.get(object); // 判断是否为null或空字符串 if (value == null || "".equals(value)) { return false; } } catch (IllegalAccessException e) { e.printStackTrace(); } } } return true; }
上面的validate方法可以校验任意一个对象是否被@NotEmpty注解标记的字段为空。
三、校验结果的展示
校验结果的展示需要在前端页面显示错误信息,其代码片段如下所示:
<form method="post" action="submit.do"> <input type="text" name="username"/><br/> <input type="password" name="password"/><br/> <input type="submit" value="提交"/> </form> <c:if test="${not empty error}"> <span style="color: red;"><c:out value="${error}"/></span> </c:if>
如果校验失败,控制器需要将错误信息存储到request中,代码示例:
@RequestMapping("submit.do") public ModelAndView submit(HttpServletRequest request, User user) { ModelAndView mav = new ModelAndView(); if (!MyValidator.validate(user)) { request.setAttribute("error", "用户名不能为空"); mav.setViewName("submit"); return mav; } //... }
四、小结
通过使用非空校验注解,可以有效地提高表单提交数据的准确性。我们可以定义一个校验方法来实现校验逻辑,然后在控制器中进行调用和错误处理。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/243216.html