Struts2 Validation框架那些小事
一、Struts2 validation最開始就給我一個(gè)大挫折,按照官方文檔做好了demo,為一個(gè)msg字段建立required檢驗(yàn),可運(yùn)行起來(lái)就是不攔截不檢驗(yàn)。那個(gè)汗呀~~~~,搞了N就才發(fā)現(xiàn)理解錯(cuò)誤,required是驗(yàn)證是否為null的,而在jsp頁(yè)面里面建立一個(gè)名為msg的input即使你什么也不寫它也會(huì)給你傳***個(gè)"",應(yīng)該使用的是requiredstring對(duì)msg檢驗(yàn)才是我的目的。之后就是認(rèn)認(rèn)真真把validation的幾個(gè)type的意思搞懂了
二、搞定了前面的原因,把input返回值也設(shè)定成了輸入頁(yè)面,檢驗(yàn)攔截成功了返回到了輸入頁(yè)面,然后就是不輸出該有的提示信息,把input換成s:textfield也不行。***原因是:我平時(shí)寫Struts2 validation應(yīng)用都會(huì)把struts.ui.theme設(shè)置成simple,而這個(gè)主題是不會(huì)顯示錯(cuò)誤信息的。把這個(gè)去掉就行了,要不這樣也行
Xml代碼
< ?xml:namespace prefix = s / >< s:textfield theme="xhtml">< /s:textfield> |
三 校驗(yàn)失敗后返回一個(gè)莫名其妙的頁(yè)面,這個(gè)真。。。。。 這個(gè)還是吃完晚飯一下子才醒悟過(guò)來(lái)的。我使用了struts2***的convention插件,校驗(yàn)失敗后會(huì)找input返回值,我并沒(méi)有顯式指定input頁(yè)面,所以convention插件會(huì)按照規(guī)則尋找actionName-input.jsp沒(méi)找到后就跑到actionName.jsp頁(yè)面去了,我說(shuō)他怎么老跑到默認(rèn)頁(yè)面去了呢,唉細(xì)節(jié)地方?jīng)]注意讓人給玩了。
四 、找到問(wèn)題后我才想起來(lái)一年前我也曾經(jīng)遇到過(guò)這個(gè)問(wèn)題,還寫過(guò)一篇博客呢,不過(guò)早忘了,汗~~~~ 這個(gè)問(wèn)題就是無(wú)論如何都會(huì)校驗(yàn)失敗,無(wú)論msg是否輸入了值。 原因很簡(jiǎn)單在action里msg字段我沒(méi)寫get方法,所以validation攔截器永遠(yuǎn)得不到msg的值,所以永遠(yuǎn)校驗(yàn)失敗。
五、目前主要就這四個(gè)問(wèn)題了, 一切都是在細(xì)節(jié)上,都是因?yàn)橐恍┘?xì)小的東西沒(méi)注意到,經(jīng)驗(yàn)真重要啊。
【編輯推薦】