一天,心血來潮的想把Struts Validator驗證改成後端來做 原來的code 修改後的code 其實我隻是把 DynaActionForm 換成 DynaValidatorForm 再來修改action 將 validate 改成true 好了server 重起!! 結果跳出
?[RequestUtils] Error creating form bean of class org.apache.struts.action.DynaValidatorForm java.lang.NullPointerException at org.apache.struts.config.FormBeanConfig.createActionForm(FormBeanConfig.java:214) at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:294) at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:193)
弄了老半天,struts config 改來改去 還是不行!!! 找出 [RequestUtils] 的DOC來看,也是看不出個是以然!! 好吧!!隻找繼續往下找,把FormBeanConfig.java 214 行翻出來看!!
211 if (getDynamic()) {
212 obj = getDynaActionFormClass().newInstance();
213 } else {
214 obj = formBeanClass().newInstance();
215 }
耶~~NullPointerException 該不會是說formBeanClass() 這個東東吧!!
繼續追下去!! 看看到底是誰 弄了個NULL回來!!
protected Class formBeanClass() {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); if (classLoader == null) {
classLoader = this.getClass().getClassLoader();
} try {
return (classLoader.loadClass(getType()));
}catch (Exception e) {
return (null); <========這裡非常的可疑!!!
}
}
就給它用e.printStackTrace(); 印出來好了!! 結果出現了 java.lang.ClassNotFoundException: org.apache.struts.action.DynaValidatorForm 原來是 org.apache.struts.action.DynaValidatorForm 這傢夥找不到,怎 會!!!趕快把!!DOC 打開來看看!!靠!!果然沒有~~
最後終於在 org.apache.struts.validator 這裡面找到了~~將form-bean 的type 改成 org.apache.struts.validator.DynaValidatorForm一切就正常了!!
這個故事告訴我們,看書照抄時,眼睛一定要睜大點,不然就得提升自己Debug的能力~~另外Struts也真是的,如果一開始就 扔個ClassNotFoundException回來~不就好了嗎??真是夠了!!