問題タブ [bean-validation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JSR 303 を使用した JSF のインライン メッセージングによるクロス フィールド検証
クラス レベルの JSR-303 制約を呼び出して JSF からクロス フィールド検証を行い、結果のメッセージを FacesMessage に変換し、ConstraintViolation の PropertyPath に基づいて特定の JSF コンポーネントに結び付ける最良の方法は何ですか?
rich:graphValidatorは近いですが、PropertyPath を利用していません。おそらく、MyFaces extval が私を近づけるかもしれませんが、bean-validation の際にフレームワークの余分なレイヤーが全体的に存在するように見えるので、私はそれを避けました。
簡単な例を次に示します。
車とドライバーに関する情報を入力するフォームを想像してください。Driver のライセンス タイプが ROAD で、Car の車のタイプが RACE の場合、結果の検証メッセージがライセンス タイプの入力に接続された FacesMessage に変換されることが理想的です。これは、メッセージが追加されたためです。 Bean Validation の流暢な API を使用してそのノードに送信します。
java - Hibernate JSR303 検証と誤って生成された propertyPath
Spring MVC を使用してフォームの JSR-303 検証を設定しようとしています。すべてが正しく構成されており (または、少なくとも構成されていると思います)、検証はほとんど正しく機能しています。ただし、検証したいオブジェクトのコレクションを含むコマンド オブジェクトがあり、そのコレクションに @Valid の注釈を付けると、Hibernate JSR-303 プロバイダーは正しい propertyPath を提供しません。ContraintViolation オブジェクト内の propertyPath はlist[0].bar
andlist[1].bar
のように入力する必要がありますが、Hibernate バリデーターは単純に and を提供list[].bar
してlist[].bar
います。これにより、Spring の SpringValidatorAdaptor.validate() メソッドがフィールド レベルのエラーを追加しようとすると、 NumberFormatException が発生します (これらのブラケット内に数値が存在することが内部的に想定されているため)。
spring-context-3.0.5 と hibernate-validator-4.1.0.Final を使用して (4.0.2.GA と 4.2.0.Beta2 も試しましたが、同じ結果が得られました)、問題を説明する小さな単体テストを作成しました。 :
上記のテストでは、次の出力が生成されます。
生成されるエラーは正しいです。ただし、propertyPath はそうではありません (少なくとも私が理解していることから)。
ここで、Hibernate の JSR-303 実装を Apache の実装 (org.apache.bval.bundle-0.2-incubating -ここに記載されている依存関係を使用) に置き換えると、期待どおりの出力が得られます。これはまったく同じテストですが、Hibernate の代わりに Apache の JSR-303 アノテーションを使用しています。propertyPath フィールドに存在するインデックスに注意してください。
さまざまな理由から、私はおそらく Hibernate の JSR-303 実装の使用に固執しています。Hibernate バリデーターがこれらのインデックスにデータを入力しない原因となっていることはありますか? Spring コントローラーで手動エラー処理をできる限り行わないようにしています。
ご協力いただきありがとうございます。
jsf-2 - JSR303 validator message recursive resolution?
I have written a JSR303 validator that compares property value to constraint:
#xA;ValidationMessages.properties :
#xA;Works fine. Almost. The validation message I get looks like this:
#xA;Would anybody please suggest easy and convenient way, how to make Validator recognize and resolve nested {home.lang.validator.Cmp.REL.GT} key? I need it to be nicely usable in JSF2, which handles validation. I'm not using Spring, but use hibernate-validator 4.
By the way, looks like hibernate-validator 4 doesn't fully implement JSR303, since later states in the 4.3.1.1.:
- Message parameters are extracted from the message string and used as keys to search the ResourceBundle named ValidationMessages (often materialized as the property file /ValidationMessages.properties and its locale variations) using the defined locale (see below). If a property is found, the message parameter is replaced with the property value in the message string. Step 1 is applied recursively until no replacement is performed (i.e. a message parameter value can itself contain a message parameter).
java - JSR303 アノテーションが Tomcat 7 で動作しない
数時間の Google といくつかのチュートリアルの後、私は打ちのめされました... 問題が何であるかについてのヒントを与えることができるエラーが発生しているという事実ではなく、私を怒らせているのはそれらの完全な欠如です!
次のコードは動作しますが、本来の動作ではありません! 入力が null でないこと、または長さが 3 文字未満でないことを確認するための注釈は実行されません。プロジェクトがデプロイされているとき、または名前変数が書き込まれているときにも、エラーは発生しません。
そして入力フォーム:
問題を引き起こしているのは tomcat だと思いますが、必要なライブラリをすべてインポートしたことは確かです。私が使用しているIDE、Eclipseについても同じことが言えます。
spring-mvc - カスタム メッセージによる JSR-303 検証
JSR-303 スタイルの検証と Hibernate バリデーター 4.1.0-Final を備えた Spring 3.0.5-RELEASE を使用しています。私のモデルクラスは次のようになります。
そして、これはバインディング付きのSpring MVCサーブレットでリクエストパラメータとして渡されます。したがって、リクエストは次のようになります。
http://localhost:8080/path?n=10
私が欲しいのは、型の不一致の例外がある場合にエラーメッセージをカスタマイズできるようにすることです。
http://localhost:8080/path?n=somestring
その結果、置き換えたい非常に長いデフォルト メッセージが表示されます。
Web で説明されているほぼすべての構成を試しましたが、どれも機能していないようです。誰かが正しい構成を知っていますか?
特に、mvc-servlet.xml には何が必要ですか? messages.properties ファイルには何が必要ですか? hibernate-validator が見つけられるように、message.properties ファイルにはマジック ネームがありますか?
mvc-servlet.xml で以下を使用しましたが、成功しませんでした:
そして、src/main/resources (および src/main/webapp/WEB-INF) にある messages.properties ファイル...
@NotEmpty メッセージの単純なオーバーライドを行う場合でも、messages.properties であらゆる種類の組み合わせを試しましたが、それでもうまくいきません。
java - Spring javax.validation annotation not caught in BindingResult
I am trying to add validation to my model objects (which double as my form backing beans) using javax.validation annotations.
My model looks like this:
#xA;In my controller I have the method call like this:
#xA;I also have the <mvc:annotation-driven/>
in my spring-servlet.xml file.
Everytime I run the form with a null value it tells me there are 0 binding result errors.
I am using Java 1.6 with Hibernate-Validator-4.2.0 and Validation-API-1.0.0 on my classpath.
Can anyone help me and let me know what I am doing wrong? Been playing around with this for a while and can't get it to work.
Thanks
spring-mvc - 生成された JAXB クラスの検証 (JSR 303 / Spring)
JAXB (maven-jaxb2-plugin)
を使用してスキーマ (リクエストとレスポンス) からドメイン オブジェクトを生成しました。いくつかの属性に検証 (notnull /empty) を追加したいと思います。カスタム Bean Validation が必要です。アプリケーションは REST サービスです。Spring 3 と JSR 303 を使用していますが、JSR 303 を使用してスキーマから生成されたオブジェクトを検証できるとは思いません。
誰かがこれを行う方法について正しい方向に私に微調整を与えることができます.
validation - actionListenerまたはactionメソッドでJSF検証を実行する方法は?
私のアプリケーションではBean検証がうまく機能しています。ここで、新しいユーザーがすでに選択されているユーザー名を選択していないことを確認したいと思います。
actionlistenerにはデータベースをチェックするコードがありますが、既存のユーザー名を選択した場合、ユーザーを強制的に元のページに戻すにはどうすればよいですか?
gwt - AntIvyビルドのgwt2.3gwt-servlet-deps.jar
AntIvyビルドを使用してDevModeで動作する単純なGWT2.3プロジェクトを取得しようとしています。2.3より前のGWTプロジェクト(特にGWT 2.0.x)にIvyを使用しましたが、過去に次の依存関係(Ivyモジュールのxmlファイル内)が機能していました:(Ivy構成の特定の名前を削除しました、およびそれらを以下の「...」として表示します。)
しかし、私のgwt-compile(GWTのJava-to-Javascriptコンパイラが呼び出されたとき)は、GWT2.3で上記を使用すると失敗します。特に、次のようないくつかのエラーがあります。
関連する可能性のある参照をオンラインで検索した後、ソースから2.3のリリース候補を作成しているときに、同様の問題に関するこのようなスレッドを見つけました。これらのスレッドは、コンパイルクラスパスに含める必要があることを頻繁に言及しています。これは、GWT問題追跡システムでのこの問題に関する作業の成果であるように見えます。gwt-servlet-deps.jar
もちろん、アイビーの場合、それは私が見ているアドバイスとはまったく同じではありません。上記の<dependency...
ルールはダウンロードしていないようですgwt-servlet-deps.jar
(そのjarの特別なコピーが見つかるGWTの公式ディストリビューションをダウンロードするのとは対照的です)。
だから私はアイビーの世界ではおそらく次のようなものを追加する必要があると推論しました:
...そして私はそのアイデアを持っていてもかなり悪いと思っていました(私はIvy&Mavenの世界では永遠の初心者のようです)が、残念ながら、私はまだ同じエラーを受け取っています。
どうやら、Java-to-Javascriptコンパイラは、バイトコードjarだけでなく、ソースを必要としているようですが、Ivyにそれらを取得するように指示する方法がわかりません。2つの検証jar(バイトコードとソースの両方)をlibにコピーするAntタスクを示すこのスレッドを見つけたので、私は近くにいるように感じますが、Ivyの世界のドットを接続するためにいくつかの助けが必要です。
Ivyにソースjarを取得するように指示するにはどうすればよいですか?
jsf - 文字列用のコンバーターはありますか?
JSF Bean Validationで文字列値を変換するために、どのコンバーターが使用されますか?使用する数値<f:convertNumber>
や日付の場合と同様に、を使用します<f:convertDataTime>
。私のコードスニペストは次のとおりです。JSFページ:
Beanクラス: