問題タブ [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.
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
ますか?
ありがとう。
spring - オブジェクトがnullの場合とオブジェクトが存在しない場合のPATCHのリクエストボディ検証
私がここで抱えている問題は、部分的な更新を許可する HTTP PATCH メソッドにあります。
以下のようなリクエストボディがあります。
リクエスト マッピング用の Bean:-
check enum は、渡される値が enumValue リストの要素の 1 つと完全に一致するかどうかを検証するカスタム アノテーションです。
私が直面している問題は、以下の 2 つの要求にあります。
上記のリクエストでは、userAssociationStatusが存在しないため、PATCH であるため、それを無視して他のステータスを更新します。
次のリクエストは
このシナリオでは、オブジェクトがリクエストにnullとして存在するため、enum not foundをスローしたいと考えています。
上記の両方のリクエストで、フィールドが null に等しい場合と、フィールドが存在しない場合、userAssociationStatusは null に等しくなります。そのため、リクエストの観点から何が起こっているのかを区別することはできません。
問題は、存在しないフィールドと null として渡される値をどのように区別するかです。
必要に応じて、より多くの情報を提供できます。
java - メソッド パラメーターの @Pattern アノテーション
メソッド パラメーターの一部である emailId と残りのエンドポイントのクエリ パラメーターを検証しようとしています。メソッド パラメーターで @Pattern アノテーションを使用しても機能しません。注釈を使用してこのシナリオを処理するより良い方法はありますか
上記を試しましたが、うまくいきません。電子メール Id フィールドはクエリ パラメータであるため、オブジェクトにラップしてバリデータを追加することはできません。
以下のようにラッパーオブジェクトでラップしようとしましたが、うまくいきませんでした
EmailId ラッパー クラス
}
この場合、url パラメーターが文字列であり、オブジェクトに割り当てているため、conversionnotsupported エラーが発生することは明らかです。
spring-mvc - @Valid と @InitBinder を一緒に使用した Spring Rest Validation
春の REST アプリがあり、@Valid アノテーションを使用して、単純な @NotNull チェックで検証できる Bean フィールドを装飾したいと考えています。
このような
それに加えて、より複雑な検証を行うために @initBinder を使用したい (1 つのフィールドの値に基づいて 2 番目のフィールドが必須であるなど)
バリデーターの実装は次のとおりです (条件付き検証の場合のみ)
}
どちらか一方を使用する例をオンラインでたくさん見ました。両方のアプローチを一緒に試してみましたが、 @initBinder をセットアップすると、リクエスト オブジェクトの @valid アノテーションが受け入れられなくなります。
単純な @NotNull チェックのために、Spring Validator クラスにコードを書きたくないからです。両方の方法を一緒に行う方法はありますか。
java - Spring 検証と Spring キャッシュ プロキシの順序が機能しない
Spring キャッシュ (EHCache を使用) と Spring 検証を統合すると、プロキシの順序が正しく設定されません。
キャッシュ アノテーション (この場合は CacheEvict) が処理される前に、検証アノテーションを処理する必要があります。
私の構成クラス:
そして私の関連する依存関係:
問題のあるインターフェイスと実装クラス:
ご覧のとおり、MethodValidationPostProcessor の順序を Orderer.LOWEST_PRECEDENCE-1 に設定し、キャッシュの順序を Ordered.LOWEST_PRECEDENCE (@EnacbleCaching 内) に設定しました。
それはプロキシの順序を設定する正しい方法ですか?
問題は、インターフェースに検証アノテーションがあり、実装にキャッシュアノテーションがあることに関連している可能性がありますか?
spring - spring バリデーター @Pattern は整数では機能しません
私は単純なパターン検証を試みています:
しかし、次のようなエラーが発生します。
しかし、これは完全にうまくいきます:
正規表現は数値型では機能しないようです。
java - Spring BindingResult またはバリデーターにエラーが表示されないのはなぜですか?
メールを含む Spring Bean を検証しようとしていますが、リクエスト Bean のメールが空の文字列の場合、バリデーターも BindingResult もエラーを表示しません。次のコードを参照してください。
豆:
コントローラ:
XML 構成:
java - 依存オブジェクトのSpringフォーム検証
フォームを検証しているときにこの問題に直面しました。単一のエンティティの場合、問題なく機能しました。しかし、ネストされたオブジェクトでオブジェクトを検証しようとすると、このエラーが発生します。
以下は私のコントローラーです
以下は私の薬の注文モデルです
以下は依存クラス Payment Request public class PaymentRequest{
以下は、支払い要求を保持する薬の注文を保持する場所です。
public class MedicineOrderRepositoryImp は MedicineOrderRepository を実装します{
そして最後にjspコードに従います。
spring-mvc - Spring MVC - コントローラーの @ModelAttribute オブジェクトにプロパティを設定する
Spring を使い始めたところ、解決できない問題が見つかりました。「ロール」プロパティを持つユーザーエンティティがあり、「ロール」はセットオブジェクトであり、エスティティは次のとおりです。
私の「役割」エンティティは次のとおりです。
JSPには、すべての「ロール」のリストを含むコンボボックスがあります
1 つまたは複数の「役割」を選択し、次のコントローラーにフォームを送信します。これには、選択した「役割」の ID のリストを持つ @RequestParam が存在します。
行 userValidator.validate(userForm, bindingResult, false); プログラムは次のエラーを表示します。
この問題を解決するのを手伝ってください
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" の場合にのみ表示されます
サンプルコード:
コントローラーコード: