我希望對我自己的方法使用@NotNull註釋(或@Required或任何其他)。雖然這在Controller和Model類中工作得很好,但我不能讓它在我自己的工作中工作。這可能是更多的net.sf.oval問題,然後玩框架。但它可能是連接的,我不知道。使用net.sf.oval進行參數驗證(在播放框架中)
我有一個類,如:
@net.sf.oval.guard.Guarded
public class SimulatorWrapper {
public SimulatorWrapper setRedCode(@play.data.validation.Required @net.sf.oval.constraint.NotNull final String redCode) {
// just gessing here:
if(Validation.hasErrors()) throw new RuntimeException("invalid argument");
if(redCode == null) throw new RuntimeException("null");
// do stuff
return this;
}
}
當我把這種方法用一個空參數,如果拋出我的異常,但@NotNull和@Required似乎做什麼都沒有。我究竟做錯了什麼? 玩框架項目隨橢圓1.5,我下載1.8並將其添加到Eclipse中的類路徑,以防萬一舊的有問題。
我用「play test my-server」啓動服務器,然後用我的瀏覽器導航到我的網站(不是測試,只是簡單的網站)。
謝謝,Alex
P.S.我知道「null是邪惡的」討論,但我沒有訪問其餘的代碼,所以我不能改變它。
嗨,首先感謝您的答覆。當然,這是使用驗證的錯誤地方,但我正在處理的是真正愚蠢的代碼,我不能改變,所以我想將@NotNull添加到幾乎所有函數的參數中。 (未來可能會有更多的限制)。 – Alex 2011-12-21 07:12:29
hups輸入發送它。所以無論如何,我正在考慮使用net.sf.oval - 這不是說該庫的目的?因爲正如你所說的,驗證僅僅是控制器和模型的必要條件。目前我有很多很多「if(... == null)throw ...」 – Alex 2011-12-21 07:14:58
我現在得到void test(@NotNull String a){new Validator()。assertValid(a); }如果我傳遞null,則失敗。但是,這幾乎相同,如果使用null然後拋出。據我所知,我需要使用一個aspectj編譯器來進行自動vaidation,但是我無法找到關於如何使用play framework來做的事情。 – Alex 2011-12-21 10:32:44