問題タブ [spring-mvc-initbinders]
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.
propertyeditor - Set タイプの PropertyEditor の問題
使用: Spring 3.2 ポートレット MVC と Liferay 5.2.3 および Tomcat 6.0.18
Set<Type>
と の間で変換する PropertyEditor を作成しようとしていますString
。無事Set<Type>
にString
仕事に就くことができました。しかし、プロパティ エディタを逆方向に認識させることができません。Type
-> String
->でこれを成功させましたType
が、 a の変換を行うことSet
は私を避けています。
SetAsText メソッドが呼び出されていないと判断したため、変換が行われなかったことを示す実行時エラーが発生しました。propertyEditors に関する情報は非常にまばらで、1 つまたは 2 つの例外を除いて、私が見つけることができたあいまいに関連する問題は 4 年以上前のものだけです。
見えないほど基本的なものが欠けているか、フレームワークの奥深くにあるものですが、何か助けや提案があればありがたいです。
コントローラーの @InitBinder スニペットは次のとおりです。
これが私のPropertyEditorです:
Type クラスのスニペットは次のとおりです。
java - Spring を使用したグローバル initBinder の作成
私は Spring 3.2 を使用しており、悪意のあるユーザーがバインドされたオブジェクトに値を挿入できないように、バインドを許可する属性をコントローラーに強制的に指定させる方法を探しています。Spring はsetAllowedFields()
、ホワイトリスト /setDisallowedFields()
ブラックリストへの使用を推奨しています。
このホワイトリストを手動で行うのではなく、動的に行いたいので、フォームに表示される属性をバインドしたいと考えています。
このホワイトリストを取得することは可能ですか? フォームの可視属性を取得する方法はありますか?
ありがとう。
java - dateFormatter タイムスタンプと日付が一致する方法
しかし、タイムスタンプも使用したため、これもエラーです。
フィールド 'dupd' のオブジェクト 'identitas' のフィールド エラー: 拒否された値 [2013-12-13 11:19:33.0]; コード [typeMismatch.identitas.dupd,typeMismatch.dupd,typeMismatch.java.sql.Timestamp,typeMismatch]; 引数 [org.springframework.context.support.DefaultMessageSourceResolvable: コード [identitas.dupd,dupd]; 引数 []; デフォルトメッセージ [dupd]]; デフォルト メッセージ [タイプ 'java.lang.String' のプロパティ値をプロパティ 'dupd' の必要なタイプ 'java.sql.Timestamp' に変換できませんでした。ネストされた例外は java.lang.IllegalArgumentException: プロパティ 'dupd' の型 [java.lang.String] の値を必要な型 [java.sql.Timestamp] に変換できません: PropertyEditor [org.springframework.beans.propertyeditors.CustomDateEditor] が返されましたタイプ [java.util.Date] の不適切な値]
日付形式の日付とタイムスタンプを一致させる方法は?
java - すべてのコントローラー用の spring mvc one init バインダー
InitBinder
5 つのコントローラーがあり、それらすべてにを登録したいと考えています。
このコードをそれぞれに追加できることはわかっています。
しかし、一度だけ定義したいと思います(StringWrapperEditor
毎回新しいものを作成する代わりに、Beanを作成して使用することもできます)。
SOや他の場所を検索しましたが、答えは見つかりませんでした。それは可能ですか?
java 1.6でSpring 3.1.1を使用しています。
spring - AspectJ: Initbinder で Autowired フィールドが null になる
ここで説明されているように AspectJ を実装しました: https://stackoverflow.com/a/10998044/2182503
@Autowired
私のフィールドが 内で null であることに気付くまで、このソリューションは正常に機能します@InitBinder
。フィールドは、 内でのみ null@InitBinder
です。
なぜそれらがnullの場合とそうでない場合があるのか 理解できません。(同じクラス内で)
spring - Spring MVC ですべてのプロパティが空の場合、ネストされた Bean を null にバインドします
Person クラスのインスタンス変数を持つ Account クラスがあるとします。
フォームの POST ボディに次のパラメータが含まれている場合:
すべてのプロパティが空であっても、Spring は新しい Person をインスタンス化します (または null、@ControllerAdvice を @InitBinder で使用しているため、String に StringTrimmerEditor を設定しています)。その場合、Spring に Person インスタンスを作成しないように指示する方法はありますか?
java - Spring 4 ControllerAdvice と InitBinder
@ControllerAdvice クラス内の @InitBinder アノテーション付きメソッドを使用して、グローバル InitBinder を登録しようとしています。
私が抱えている問題は、ロード時に @InitBinder を見つけていることですが、「INIT BINDER」が System.out に出力されないため、実際にはメソッドに入らないことです。これは、カスタム エディターが登録されていないため、機能しないことを意味します。initBinder メソッドをコントローラの 1 つにコピー アンド ペーストすると、その特定のコントローラで問題なく動作します。
ここで何が起こっているのですか?