5

表面的には、少し奇妙な質問です!しかし、私はWebフローと従来のSpringMVCコントローラーの両方を使用するWebアプリを作成しています。

Webフロービューの1つから、クライアントからSpringコントローラーへのhttpリクエスト(ajax)が作成されます。これが最初にコーディングされたときは、Webフローへの論理的な接続はあまりありませんでしたが、今では状況が進み、コントローラーは、要求がどの画面(ビューステート)から来たかを知ることで実際に行うことができます。

私のコントローラーメソッドの署名は次のようになります。

@RequestMapping(value="/AjaxStuff", method=RequestMethod.POST)
public String ajaxStuff(@ModelAttribute("quote") QB2MotorQuote p_quote, BindingResult p_bindingResult, 
        HttpServletRequest p_req, Model p_model, DefaultMessageContext p_messages) {

Webflowアクションクラスのいくつかから、RequestContextオブジェクトから現在の状態を取得できることがわかっています。

public Event checkDeclines(RequestContext p_ctx) throws Exception {
    // get the current state
    StateDefinition state = p_ctx.getCurrentState();

私はSpringがメソッドシグネチャでパラメータを指定するだけで自動的にパラメータを注入できる「voodoo」を本当に理解したことはありません(確かにそれは知っていることだけを注入できますか??)。コントローラメソッドのメソッドシグネチャを変更してRequestContextに注入しようとしましたが(注入されることを期待して無駄に)、そうではありません。RequestContextがインターフェースであると文句を言います。

だから、誰かが私のコントローラーに現在のウェブフローの状態を知らせる方法を知っていますか?コントローラーのメソッドシグネチャに何かを挿入するか、おそらくhttpリクエスト(またはリクエストから取得できるセッション)から取得できます)。

これに関するどんな助けも非常にありがたいです。

4

1 に答える 1

7

Webflowビュー内${flowRequestContext}で、ajax呼び出しで使用できる変数にアクセスできる必要があります。

必要な情報${flowRequestContext.currentState}をそこから取得して、パラメーターとして追加するだけです。

Webflow環境にいないため、requestContextを直接注入することはできません。もしそうなら、直接使用することができますRequestContext.getRequestContext()。MVCコントローラーから呼び出してみると、nullになります。フロー内から試してみてください。そうすれば、それを手に入れることができます。

于 2012-09-07T12:37:05.900 に答える