問題タブ [spring-validator]

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.

0 投票する
3 に答える
26334 参照

java - @Validated および @Valid を春のバリデーターで使用する

JSON メッセージをスプリングに送信するために Java Bean を使用してい@RestControllerます@Valid。しかし、私は Protobuf/Thrift に移行し、REST から離れたいと考えています。これは内部 API であり、多くの大企業が内部で REST を廃止しています。これが実際に意味することは、メッセージ オブジェクトを制御できなくなったことです。メッセージ オブジェクトは外部で生成されたものです。もう注釈を付けることはできません。

したがって、私の検証はプログラムで行う必要があります。どうすればいいですか?私はaをコーディングしましたがValidator、うまく機能します。@Validしかし、niceアノテーションは使用しません。私は次のことをしなければなりません:

これは臭い。私はすべての方法でこれを行う必要があります。これで、多くのことをスローする 1 つのメソッドに入れることができBindException、すべてのメソッドに 1 行のコードを追加することができます。しかし、それはまだ素晴らしいことではありません。

私が欲しいのは、次のように見えることです:

それでも同じ結果が得られます。私の Bean には注釈がないことを思い出してください。はい、@InitBinderメソッドで注釈を使用できることはわかっています。ただし、これは Web リクエストに対してのみ機能します。

このクラスに正しいものを注入することは気にしませんが、ValidatorFactory がメソッドValidatorに基づいて正しいものを引き出すことができればと思います。supports()

これは可能ですか?代わりに実際に Spring 検証を使用するように Bean 検証を構成する方法はありますか? どこかでアスペクトをハイジャックする必要がありますか? LocalValidatorFactoryまたはにハックしMethodValidationPostProcessorますか?

ありがとう。

0 投票する
0 に答える
434 参照

spring - オブジェクトがnullの場合とオブジェクトが存在しない場合のPATCHのリクエストボディ検証

私がここで抱えている問題は、部分的な更新を許可する HTTP PATCH メソッドにあります。

以下のようなリクエストボディがあります。

リクエスト マッピング用の Bean:-

check enum は、渡される値が enumValue リストの要素の 1 つと完全に一致するかどうかを検証するカスタム アノテーションです。

私が直面している問題は、以下の 2 つの要求にあります。

上記のリクエストでは、userAssociationStatusが存在しないため、PATCH であるため、それを無視して他のステータスを更新します。

次のリクエストは

このシナリオでは、オブジェクトがリクエストにnullとして存在するため、enum not foundをスローしたいと考えています。

上記の両方のリクエストで、フィールドが null に等しい場合と、フィールドが存在しない場合、userAssociationStatusは null に等しくなります。そのため、リクエストの観点から何が起こっているのかを区別することはできません。

問題は、存在しないフィールドと null として渡される値をどのように区別するかです。

必要に応じて、より多くの情報を提供できます。

0 投票する
1 に答える
16340 参照

java - メソッド パラメーターの @Pattern アノテーション

メソッド パラメーターの一部である emailId と残りのエンドポイントのクエリ パラメーターを検証しようとしています。メソッド パラメーターで @Pattern アノテーションを使用しても機能しません。注釈を使用してこのシナリオを処理するより良い方法はありますか

上記を試しましたが、うまくいきません。電子メール Id フィールドはクエリ パラメータであるため、オブジェクトにラップしてバリデータを追加することはできません。

以下のようにラッパーオブジェクトでラップしようとしましたが、うまくいきませんでした

EmailId ラッパー クラス

}

この場合、url パラメーターが文字列であり、オブジェクトに割り当てているため、conversionnotsupported エラーが発生することは明らかです。

0 投票する
1 に答える
3767 参照

spring-mvc - @Valid と @InitBinder を一緒に使用した Spring Rest Validation

春の REST アプリがあり、@Valid アノテーションを使用して、単純な @NotNull チェックで検証できる Bean フィールドを装飾したいと考えています。

このような

それに加えて、より複雑な検証を行うために @initBinder を使用したい (1 つのフィールドの値に基づいて 2 番目のフィールドが必須であるなど)

バリデーターの実装は次のとおりです (条件付き検証の場合のみ)

}

どちらか一方を使用する例をオンラインでたくさん見ました。両方のアプローチを一緒に試してみましたが、 @initBinder をセットアップすると、リクエスト オブジェクトの @valid アノテーションが受け入れられなくなります。

単純な @NotNull チェックのために、Spring Validator クラスにコードを書きたくないからです。両方の方法を一緒に行う方法はありますか。

0 投票する
1 に答える
1178 参照

java - Spring 検証と Spring キャッシュ プロキシの順序が機能しない

Spring キャッシュ (EHCache を使用) と Spring 検証を統合すると、プロキシの順序が正しく設定されません。

キャッシュ アノテーション (この場合は CacheEvict) が処理される前に、検証アノテーションを処理する必要があります。

私の構成クラス:

そして私の関連する依存関係:

問題のあるインターフェイスと実装クラス:

ご覧のとおり、MethodValidationPostProcessor の順序を Orderer.LOWEST_PRECEDENCE-1 に設定し、キャッシュの順序を Ordered.LOWEST_PRECEDENCE (@EnacbleCaching 内) に設定しました。

それはプロキシの順序を設定する正しい方法ですか?

問題は、インターフェースに検証アノテーションがあり、実装にキャッシュアノテーションがあることに関連している可能性がありますか?

0 投票する
1 に答える
8323 参照

spring - spring バリデーター @Pattern は整数では機能しません

私は単純なパターン検証を試みています:

しかし、次のようなエラーが発生します。

しかし、これは完全にうまくいきます:

正規表現は数値型では機能しないようです。

0 投票する
2 に答える
5642 参照

java - Spring BindingResult またはバリデーターにエラーが表示されないのはなぜですか?

メールを含む Spring Bean を検証しようとしていますが、リクエスト Bean のメールが空の文字列の場合、バリデーターも BindingResult もエラーを表示しません。次のコードを参照してください。

豆:

コントローラ:

XML 構成:

0 投票する
1 に答える
271 参照

java - 依存オブジェクトのSpringフォーム検証

フォームを検証しているときにこの問題に直面しました。単一のエンティティの場合、問題なく機能しました。しかし、ネストされたオブジェクトでオブジェクトを検証しようとすると、このエラーが発生します。

以下は私のコントローラーです

以下は私の薬の注文モデルです

以下は依存クラス Payment Request public class PaymentRequest{

以下は、支払い要求を保持する薬の注文を保持する場所です。

public class MedicineOrderRepositoryImp は MedicineOrderRepository を実装します{

そして最後にjspコードに従います。

0 投票する
1 に答える
1052 参照

spring-mvc - Spring MVC - コントローラーの @ModelAttribute オブジェクトにプロパティを設定する

Spring を使い始めたところ、解決できない問題が見つかりました。「ロール」プロパティを持つユーザーエンティティがあり、「ロール」はセットオブジェクトであり、エスティティは次のとおりです。

私の「役割」エンティティは次のとおりです。

JSPには、すべての「ロール」のリストを含むコンボボックスがあります

1 つまたは複数の「役割」を選択し、次のコントローラーにフォームを送信します。これには、選択した「役割」の ID のリストを持つ @RequestParam が存在します。

行 userValidator.validate(userForm, bindingResult, false); プログラムは次のエラーを表示します。

この問題を解決するのを手伝ってください

0 投票する
4 に答える
7876 参照

java - Spring MVC での条件付き検証に JSR-303 アノテーションを使用する

10 個のフィールドを持つフォームがありますが、最初はページに 5 つのフィールドしか表示されません。残りのフィールドは非表示になり、他のフィールドにバインドされた onChange イベント リスナーに基づいて表示されます。

空白ではないフィールドが 5 つだけあるフォームを送信できるシナリオがあります。その場合、検証はそれらの 5 つに対してのみ実行する必要があります。場合によっては、すべてのフィールドに対して検証を実行する必要があります (onChange コールバックを使用した他のフィールドの状態に基づいて)。注釈を使用してフィールド検証をフィルタリングする方法はありますか、それともカスタム バリデータを作成する必要がありますか?

現在、10 個のフォーム フィールドすべてが検証されています。ルールは次のとおりです。

  • a、b、c、d、e は必須フィールドです
  • f,g,h は、a="111" の場合にのみ表示されます
  • i,j は、c="222" の場合にのみ表示されます

サンプルコード:

コントローラーコード: