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