2016-10-26 24 views
1

私は単純な@RestControllerを持っており、GETクエリからの任意の値を保持するリクエストオブジェクトを作成したいと考えています。spring @RestControllerサーブレットでget queryパラメータ名を設定する方法は?

また、getクエリのパラメータ名と異なる変数名を使用したいと思います。

@RestController 
public class MyServlet { 
    @RequestMapping(value = "/start") 
    public String start(@Valid MyRequest req) { 
       Logger.log("IN"); 
     return req.getTest(); 
    } 
} 

public class MyRequest { 
    @XmlElement(name = "asd") 
    private String test; 

    //getter, setter 
} 

要求:localhost:8080/start?asd=imhere

結果:私は、ログの文INをseingてるので、サーブレットが動作します。 BUT reqパラメータがnullです。どうして?

次のURLを送信すると動作します。localhost:8080/start?test=imhere サーブレットは機能しますが、パラメータの名前は変更されません。

答えて

0

スプリングは、セッターを使用してプライベート変数に反映させるため、test変数はtestパラメータを送信したときにのみ設定されます。 documentation (@RequestMapping - Supported method argument types)から

:フィールドに直接(セッター経由)Beanプロパティ にリクエストパラメータをバインドしたりする

コマンドまたはフォームオブジェクト...

編集 - あなたが変更したい場合名前を変換する必要があります。参照:

  1. docs
  2. mvc example
+0

私が知っている、との質問がある:どのように私はこれを変更し、異なるパラメータ名に解決するために、スプリングを強制することができますか? – membersound

+0

お詫び申し上げます、私はあなたの最後の質問「なぜ?」に答えていました。私は自動的な方法はないと思っています、あなたはおそらく私が思うタイプコンバータを利用する必要があります。 [here](http://unitstep.net/blog/2013/04/07/spring-mvc-request-parameter-conversion-with-minimal-configuration/)のようなものが役に立ちます。 – slc84

+0

こんにちは私は、アノテーションベースの方法があると思った。 – membersound

関連する問題