問題タブ [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.

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

spring-mvc - Spring MVC: Request Scope、binder.setDisallowedFields でコマンド オブジェクトを更新しようとしています

私はこのオブジェクトを持っています

次のコントローラーのメソッドがあります

ここまでは、コントローラーがフォームを作成 (GET) し、新しい コマンドオブジェクトを送信 (POST) できるようになるまで、Validationコードはうまく機能します。

問題はアップデートにあります。

私は次のものを持っています:

私が持っていることを観察しますbinder.setDisallowedFields("id")

問題は:

  • フォームまたはコマンドにエラーがある場合、コントローラーはビューを再レンダリングし、フォームが表示され、エラーメッセージがどのように予想されるかを示しますが、ID 値はありません

また

  • オブジェクトを更新しようとすると、もちろん id 値を保持し、エラーなしで単に更新を続行すると失敗します

コンソールに次のように表示されます。

IDがヌルです。Request Scopeを維持するこの問題を回避するにはどうすればよいですか?

動作している代替コントローラーがあり@SessionAttributes、すべてが完璧に機能します。しかし、ユーザーが同じ Web ブラウザーで多くのタブ (1 つは作成用、もう 1 つは更新用) を開いていると、大きなリスクになるため、すべてが非常に間違ったものになります。Spring MVC + セッション属性と複数のタブに従って、セッション スコープの代わりにリクエスト スコープを使用する必要があります。意味があります。

悲しいことに、Spring はこれを修正しないようです: @SessionAttributes はタブ ブラウジングでは機能しません

添加

あなたの提案によると、私は以下を持っています:

メソッドの使用を観察してください@RequestParam。私の問題は、更新する URL が次のスタイルの場合に、そのメソッドを更新して機能させる方法 http://localhost:8080/spring-utility/deportista/1/actualizar.htmです。URL にパラメーターがないため、現在は役に立ちません@RequestParam

私はすでにSpring Referenceのドキュメントを読んでいます: Using @ModelAttribute on a method

2回目の加算

はい、あなたは正しかったです。私は昨日それを行いましたが、次のことを共有するのを忘れています。

a@ModelAttributeはどのメソッドでも常に前に呼び出されるためhandler、次の URL は失敗http://localhost:8080/spring-utility/deportista/registrar.htmし、ページに次のように表示されます。

もちろん、URL に予期されるid. したがって、後で編集/表示するために新しいレコードを作成することはできません。

次の作業について確認できます。

  • http://localhost:8080/spring-utility/deportista/1/detalle.htm
  • http://localhost:8080/spring-utility/deportista/1/actualizar.htm

ID (1) が取得されます。

どうすればこれを解決できますか?

ありがとうございました

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

spring - Spring/initBinder - 複数の値が選択されている場合にバインドされた値を取得できない

以下のコードは、miniApple の単一の値を保存しようとすると正常に動作します。コントローラーの引数、つまりappleでminiAppleオブジェクト値の値を確認できます。ただし、複数の値がある場合はバインドできません。文字列 (カンマ区切りの値) をカスタム オブジェクトのリスト (ここでは MiniApple のリスト) に変換するために initBinder メソッド内に記述する構文がどうあるべきかわからない

複数の値を選択すると、setAsText() のテキスト値をコンマ区切りの値にすることができます (例: "miniApple1, miniApple2,miniAPlle3")

コントローラーメソッド save()


Init Binder メソッド


setAsText メソッドを持つカスタム エディター クラス


コントローラの save() メソッドの引数としてバインドされた値を取得するオブジェクト


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

spring-mvc - Spring MVC モデル属性のネストされたプロパティの名前を変更する

私は次のフォームを持っています:

modelおそらくadvertisementバインディングが発生したときに 、名前を付けたプロパティの名前を別の名前に変更しadvertisementて、ビュー内のように参照できるようにしたいと思います(タイムリーフなど)。

これは Spring MVC を使用して可能ですか?

編集1:これが私のアプリケーションのAbstractFormクラスです:

Java 部分で非常にきちんとした Generics を使用していることがわかります。modelただし、ビューでプロパティの名前をカスタマイズしたいので、私の質問です。

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

spring - java BeanのPropertyEditorはステートフルですか?

Spring でのデータ バインディングを理解しているときに、PropertyEditors がステートフルであることを知りました。ここでステートフルとはどういう意味ですか?

ここにそのドキュメントのリンクがあります

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/config/CustomEditorConfigurer.html

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

java - タイプ「org.springframework.web.multipart.commons.CommonsMultipartFile」の値を必要なタイプに変換できませんでした

次のコントローラーメソッドがあります。

次のスタックトレースが表示されます。

OnlyForImagesFileWrapper ソース:

問題を回避するには?

マルチパート ファイルのこのコントローラー メソッドの変換ポリシーはどこで設定できますか?

PS

カスタムinitbinderを作成しようとしました:

しかし、フォームを送信してもこのメソッドは呼び出されず、上記のスタックトレースが表示されます。

PS

M. Deinum命令の実行後の結果(saveTerminalメソッド内の場合):

http://dl2.joxi.net/drive/0005/3037/338909/150502/e592df25e4.jpg

また、initbinder メソッドが呼び出されないことに気付きました。

私のコードの詳細(M. Deniumのアドバイス後の状態):

jsp:

コントローラーメソッドの引数: