webflow.mvc.servlet.FlowController で Spring webflow 2 を使用しています。
フォーム データ サブミット (POST) をこのフロー ビューのモデルに直接フローにバインドしたいと考えています。
フローをナビゲートしてフォーム データを内部的に送信する場合、データはモデルに正しくバインドされますが、外部 Web サイトからデータを送信する場合、データは自動的にバインドされません。
これを確認するために、ビュー内で spring:form タグを使用して、名前/パスを介してサブミット値をバインドしました。
Example:
- the views model is named "model"
- the class used for the model object is has an attribute called "value1"
-> the bind path for the form:input element is "model.value1"
-> the submitted form input field is named "model.value1" as well
アップデート
次を使用して、リクエストパラメーターに手動でアクセスできるようになりました。
<action-state>
<evaluate expression="myBinder.execute(flowRequestContext)"/>
</action-state>
ここで、myBinder は実装するカスタム Java クラスですorg.springframework.webflow.execution.Action
そして、flowRequestContext は、フレームワークによって提供される EL 変数です。
リクエストのパラメータを通じてrequestContext.getExternalContext().getRequestParameterMap();
公開されます。
これらのパラメーターをモデル Bean にバインドするには、あちこちで言及されている「bindAndValidate」メソッドのように、自動的にバインドする便利な方法があります。そのようなメソッドがどのクラスで利用できるかわかりません。
モデル Bean をスーパークラス化するクラスがあるはずですが、どこにも見つかりません。
アップデート
Action インターフェイスを実装する代わりに、bindAndValidate() メソッドを持つ FormAction をサブクラス化しました。ただし、このメソッドにはパラメーターとしてリクエストが必要であり、EL でリクエストへの参照を取得する最良の方法はまだわかりません。
さらに、これが実際にリクエストパラメーターをモデルにバインドして問題を解決するかどうかをまだ確認する必要があります。
アップデート
パラメータを指定せずに行われた bind メソッドの呼び出しを示す例を見つけたので、それら (requestContext) が何らかの形でフレームワークによって検出されたと仮定します。
このアプローチを使用すると、モデル名とクラスが FormAction Bean のプロパティとして設定されます。
フローは正しく実行されているようですが、リクエスト パラメータはまだバインドされていません...
たぶん、リクエストから各パラメーターを読み取り、モデルオブジェクトに設定する手動のアプローチに戻る必要があります...
どんなアイデアでも大歓迎です...