一、註解的定義與使用
非空校驗註解可以指定被註解字段不能為空,其定義如下:
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/zh-hk/n/243216.html