一、註解的定義與使用
非空校驗註解可以指定被註解欄位不能為空,其定義如下:
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-tw/n/243216.html
微信掃一掃
支付寶掃一掃