作者gto770 (人多更寂寞)
看板java
標題[問題] struts2 interceptor vaildation的問題
時間Thu Feb 7 14:46:07 2013
小弟剛學習struts2+spring+hibernate的架構不久,有一個問題困擾我很久,不知道
怎麼解決,不知道版上有沒有高手能夠幫忙解決這個問題或是提供一些方向?
問題是這樣的,在struts中有使用了defaultStack,有一支表單的程式(prodedit.jsp)
需要做驗證,prodedit.jsp將表單送出至ProdAction去做該做的事情,在那之前要被
攔截器攔截做驗證,當中有配置了一個ProdAction-validation.xml的檔案
prodedit.jsp中每個欄位都必須填寫, 當中有一個prodPrice的欄位,這個欄位在
ProdAction中的屬性是Integer的型態,而且因為這欄位強迫必須填寫,所以我們在
ProdAction-validation.xml中會去定義 <field-validator type="required">
問題來了,如果今天我在prodPrice這個欄位中填入了"12a",因為他不是Integer
,所以會被defaultStack中的conversionError所攔截,最後在fieldError裡面就會
出現兩個ErrorMessage: 1.Invalid field value for field "prodPrice"
2.價錢欄位不能為空白(這是自己設置的)
簡單來說,不希望他同時出現兩個訊息,不知道板上有沒有人對於這個問題有沒有什麼
看法能夠提供小弟去處理他。
這邊先說明一下,我有先上網google過了,網路上有人說把defaultStack中的
conversionError這一個interceptor拿掉就好了,這也許是一個辦法,但我想說如果
不去動到他defaultStack的情況之下,是否有更好的解決辦法??
另外,我其實透過自己寫一個interceptor也可以解決,就是不使用他的
defaultStack的interceptor,但這個做法跟上述其實沒什麼差別,就是別用
conversionError這一個interceptor而已,所以我想知道的是,如果要用
conversionError這一個interceptor的情況之下,是否能夠解決剛剛所敘述的兩個
錯誤訊息的這一個問題??
文章有點長,感謝大家耐心看完
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.75.169.115
推 d1288999:其實你可以在送出之前用js檢查就好了啊@@也可以顯示訊息 02/07 16:15
→ gto770:用JS檢查我知道 但是JS治標不治本~~問題的核心也還是存在 02/07 16:49
→ cyclone350:why JS治標不治本?我練習是用jquery-plugin-validation 02/07 17:43
→ cyclone350:另外聽說現在新的東西幾乎都是用springMVC,是真的嗎? 02/07 17:45
→ qrtt1:client side 檢查不可信。 02/07 17:49
推 cyclone350:請問在怎樣的情況,會使用 client sid e的檢查 02/07 18:09
→ cyclone350:還是通常在 client 跟 server 都會做檢查? 02/07 18:19
→ PsMonkey:client 檢查→縮短回應時間,server 檢查→防止惡搞 02/07 22:51
→ gto770:一般來說client跟server端都會作~~client的檢查容易被破 02/08 00:02
→ gto770:server的檢查才是最後一道防線阿~~ 02/08 00:04
→ gto770:對於文章提出的問題有人有什麼方向可建議嗎??高手出來吧XD 02/08 00:07
推 song760211:為什麼不把檢查寫在action,而執着用struts的驗證 02/10 11:37