2012-01-07 22 views
1

Im Spring MVCを使用しています。 は、私は次のURLを持つ人のリストを持っている:Spring MVCでのメソッドの処理 - 同じURLパス

http://localhost/PersonsWebApp/persons/list

マイコントローラー:

@Controller 
@RequestMapping("/persons") 
public class PersonController { 

    @RequestMapping(value="/list", method=RequestMethod.GET) 
    public String allPersons(Model model){ 
.... 
} 

私のようなURLを使ってビューに特定の人を追加したいと思います:

http://localhost/PersonsWebApp/persons/george

私がURLを使用しようとすると:

同じパスを持つURLが2つあるので、競合が発生する可能性があります。どのようにURLを変更せずにこの問題を克服するには?

答えて

1

私は別のものをお勧めします。例えばgithubは、これらのURLを使用しています。

はその素敵ではないですか?

ですから、このようなマッピングを試すことができます。

@Controller 
public class PersonController { 
    @RequestMapping(value="/persons", method=RequestMethod.GET) 
    public String allPersons(Model model) { 
    ... 
    } 

    @RequestMapping(value="/person/{firstname}", method=RequestMethod.GET) 
    public String getPersonInfo(@PathVariable("fname") String firstname) { 
    ... 
    } 
} 

はあなたの@Controller(あなたがかもしれないが)に@RequestMappingを配置する必要はありません。

1

Grzegorzの提案は有効であり、考慮する必要があります。しかし、あなたの質問に答えるために、あなたが提供したコードサンプルは、あまり具体的でないパターンよりもより特定の一致(より少ないパターンで)が好まれるのでうまく動作するはずです。

したがって、着信URLが/ persons/listの場合、allPersons()メソッドは呼び出されたものでなければなりません。

関連する問題