0

同じクラスの2つの異なるパラメーターをURLを介してコントローラーのハンドラーメソッドに渡す方法を理解しようとしています。たとえば、「id」パラメーターを持つ「Foo」クラスがある場合(単純にするためにパラメーターを1つだけ言っていますが、それらがたくさんあるクラスから考えてください)、コントローラーのコードは次のようになります。

@Controller(value = "customerCareRemoteService")
public class CustomerCareRemoteServiceImpl {

// Othe methods/requests

    @RequestMapping(value = "/" + "prueba" , method = RequestMethod.GET)
    public @ResponseBody String prueba(Foo pFoo1, Foo pFoo2) {
        //stupid and not interesting code
        String answer = "pFoo1.id is " + pFoo1.id + ". pFoo2.id is " + pFoo2.id.";
        System.out.println(answer);
        return answer;

    }

}

したがって、このメソッドを呼び出すとき、2つのパラメーターを区別する方法はありません。

http://myfakeurl/prueba?id=1&id=2

どのように対処すればよいですか?パラメータを「プレフィックス」する方法はありますか?@RequestParamを見たことがありますが、私自身の美容個人クラスでは使用できないため、機能しません(または私は間違っていますか?)。また、ラッパークラスは避けたいと思います。お時間をいただきありがとうございます。

4

2 に答える 2

1

この問題を解決するには、@PathVariableを使用する必要があります。

マッピングURLは次のようになります。

@RequestMapping(value = "/" + "prueba" + "/{id1}/{id2}" , method = RequestMethod.GET) 

そしてあなたの関数の議論はそうなるでしょう。

public @ResponseBody String prueba(@PathVariable int pFoo1, @PathVariable int pFoo2)

このようにして、コントローラーで両方のIDを取得し、それらを使用してさらに操作することができます。

これがお役に立てば幸いです。

乾杯。

于 2012-05-11T05:48:32.527 に答える
0

それで、同僚の助けを借りて、私はそのテーマについて話している次のページに来ました:

SpringMVCコマンドオブジェクトをバインドする際のパラメーター名のカスタマイズ

これは次のStackOverFlowの質問につながります:

springmvcコマンドオブジェクトをバインドするときにパラメーター名をカスタマイズする方法

したがって、「アノテーションXを使用する」のような簡単な解決策はないようですが、独自のリゾルバーを作成し、カスタムアノテーションを使用します(初心者として、私はまだそれを理解しようとしています:-S)。

于 2012-05-14T09:37:37.507 に答える