DEBUG (PrefixMethodInvocationUtil:72) - cannot find method [validateErWeiMa] in action [com.ticket.action.WapValidationAction@4c8dc2e4]
DEBUG (PrefixMethodInvocationUtil:72) - cannot find method [validateDoErWeiMa] in action [com.ticket.action.WapValidationAction@4c8dc2e4]
Struts2 AnnotationValidationInterceptor 按約定尋找驗證方法:
erWeiMa() → 驗證方法應為 validateErWeiMa()doErWeiMa() → 驗證方法應為 validateDoErWeiMa()日誌顯示兩者均未找到,說明 WapValidationAction 類中缺少對應的驗證方法。
public class WapValidationAction extends ActionSupport {
public String erWeiMa() {
// 業務邏輯
return SUCCESS;
}
// 必須存在:對應 erWeiMa() 的驗證
public void validateErWeiMa() {
if (StringUtils.isBlank(getImg64())) {
addFieldError("img64", "圖片數據不能為空");
}
}
}
@SkipValidation
public String erWeiMa() { ... }
在 WapValidationAction-erWeiMa-validation.xml 中定義驗證規則,不依賴方法命名約定。
validateXxx() 命名,與 Action 方法 xxx() 對應。validateXxx() 中,業務邏輯放在 xxx() 中,職責分離。cannot find method [validateErWeiMa] 純屬代碼缺失導致。補全對應驗證方法或顯式跳過驗證即可解決。養成「Action 方法與驗證方法成對出現」的習慣,避免此類低級錯誤。