Re: [問題] 型別轉換、Spring Validator 等問題

作者: PsMonkey (痞子軍團團長)   2014-04-14 18:06:27
先說,我根本不會 Spring
只是被人覺得話講一半,這的確不太好
那我就只好來佔個版面 [被毆飛]
萬一 Spring 真的那麼神的話,還麻煩各方大德指正
※ 引述《justin761002 (JiMing)》之銘言:
: BreakingValidator.java
: import org.springframework.validation.Validator;
: public class BreakingNewsValidator implements Validator {
: ...
: public void validate(Object target, Errors errors) {
: ((Breaking) Breaking.class).getBreakingUrl();
: //錯誤訊息 Cannot cast from Class<Breaking> to Breaking
: }
: }
`Breaking.class` 會回傳 `java.lang.Class`
就算不知道這玩意是什麼(其實我也搞不太清楚 [喂喂])
至少也非常能確定,他絕對不是某個 `Breaking` 這個 class 的 instance
那麼詭異點就有兩個:
1. 你把一個不是 `Breaking` 的 instance 硬轉成 `Breaking`?
這不出問題的或然率小於 0 阿 [喂喂]
2. 就算上頭 1 不是問題好了
那麼 `Breaking.class` 這玩意怎麼看都不會是你要 valid 的東西吧?
或著說,你不覺得 `Breaking.class` 看起來就像常數值 / 固定內容
根本不會隨著不知道在哪輸入的輸入值而改變嗎?
Spring 好像很厲害,但是應該沒有厲害到這種詭異的程度吧?
再者,從變數名稱看起來,也就是這行
public void validate(Object target, Errors errors)
單純望文生義來猜
這大概是 `Validator` 要 override 的 method
要 validate 的東西應該是塞在 `target`
然後 validate 不過的部份,可以塞在 `errors` 裡頭
讓 caller 可以進一步處理?
最後,我是不知道你為了什麼開始學 Spring
只是... 可以先把 Java 基礎打好再開始嗎?
作者: justin761002 (JiMing)   2014-04-14 20:29:00
謝謝,你的文章讓我豁然開朗extends Validator 一定要實作兩個東西boolean supports(Class<?> clazz)和void validate(Object target,Errors errors)Errors有許多的reject方法可以儲存要回傳的錯誤訊息的確是不需要 return 的修正:是 implements Validator

Links booklink

Contact Us: admin [ a t ] ucptt.com