2016-11-01 8 views
0

paramが要求されたことに基づいてメソッドが異なるものを返す可能性があるのだろうかと思います。例:Springでリクエストされたparamに基づいて異なるものが返されましたか?

@RestController 
public class GreetingController { 

private static final String templateForName = "Hello, %s!"; 
private static final String templateForTest = "Testing new output, which is %s!"; 

@RequestMapping("/greeting") 
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name 
         ,@RequestParam(value="test", defaultValue="TEST value") String test 
         ) { 
       //An if here that would decide which param was requested? 
       return new Greeting(String.format(templateForName, name)); 

} 

ここに「Hello、User!」と表示されます。 ?name=User 「新しい出力のテストはテストです!」と表示することはできますか? ?test=test

私は春を使って何かを始めているだけなので、不明な点や不十分な情報がある場合は、私に知らせてください。

+0

いつも異なった、明確に定義された振る舞いを持つことになるのであれば、パラメータをPATHパラメータの一部にするのはなぜですか? – Andonaeus

+0

私はあなたが何を意味しているのか分かりません。 – ForInfinity

+0

確かに、今日は時間があるときの例を使って答えを追加します – Andonaeus

答えて

0

あなたは、単に以下のように適切な挨拶のオブジェクトを返すようにif else conditionsを追加することができます:パスのparamsを使用して、私のコメントパー

@RequestMapping("/greeting") 
    public String greeting(@RequestParam(value="name", defaultValue="World") String name 
          ,@RequestParam(value="test", defaultValue="TEST value") String test 
          ) { 
     Greeting greeting = null; 
     if(name.equals("User")) { 
      greeting = new Greeting(String.format(templateForName, name)); 
     } else if(test.equals("test")) { 
       greeting = new Greeting(String.format(templateForTest, test)); 
     } 
     return greeting; 
    } 
+0

ありがとう!また、 'public returnType greeting'の同じメソッドを使う2つの' @ RequestMapping'を使用することが可能かどうかは知っていますか?可能であれば 'Map <> 'からの選択でしょうか? – ForInfinity

0

@RequestMapping("/greeting/name/{name}") 
public Greeting nameGreeting(@PathParam(value="name", defaultValue="World") String name) { 

    return new Greeting(String.format(templateForName, name)); 

} 

@RequestMapping("/greeting/test/{test}") 
public Greeting testGreeting(@PathParam(value="test", defaultValue="TEST value") String name) { 

    return new Greeting(String.format(templateForTest, test)); 

} 
0

ただのための1 @RequestParamとテストを使用あなたが探している価値。

@RequestMapping("/greeting") 
public String greeting(@RequestParam(value="name", defaultValue="World") String name) { 
    if(name.equals("Test")) { 
     return new Greeting(String.format(templateForTest, test)); 
    } 
    return new Greeting(String.format(templateForName, name)); 
} 
関連する問題