自分のメソッドに@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;
}
}
私はnullパラメータを使用してこのメソッドを呼び出す
私の例外がスローされますが、@NotNullと@Requiredは全く何もしないように見える場合。私は間違って何をしていますか? プレイフレームワークプロジェクトには楕円1.5が付属していました。私は1.8をダウンロードし、古いものに問題があった場合に備えて、それをEclipseのクラスパスに追加しました。私は "play test my-server"でサーバーを起動していますが、ブラウザで私のウェブサイト(まだテストではなく、単純なサイト)に移動します。
ありがとう、アレックス
P.S.私は "nullは悪い"議論を知っているが、私はそれを変更することができないようにコードの残りの部分にアクセスすることはできない。
こんにちは、まずはお返事ありがとうございます。もちろんこれはバリデーションを使うのに間違った場所ですが、私は変更できない本当にばかげたコードを扱っていますので、私の関数のすべての単一のパラメータに@NotNullを追加したいと思います。 (将来的にはさらに制限があります)。 – Alex
hupsはそれを送信しました。とにかく、私はnet.sf.ovalを使用することを考えていました - それはそのライブラリの目的ですか?あなたが演奏のバリデーションを言ったように、コントローラとモデルのための唯一のmentです。現在、私はたくさんの "if(... == null)throw ..."を持っています。 – Alex
私は今void test(@NotNull String a){new Validator()。assertValid(a); } nullを渡すと失敗します。しかし、それはnullを使用してスローするのとほとんど同じです。私が理解する限り、私は自動化のためのaspectjコンパイラを使用する必要がありますが、私はプレイフレームワークでそれを行う方法については何も見つかりません。 – Alex