2012-04-03 14 views
2

が、私はまだ働いている調査しました共通の問題に過ぎ...私はすべてのRESTのマッピングを持っているRESTfulなサーブレットのURL - web.xml内のservlet-mapping私はこのように感じる

私のweb.xmlに

通話 -

<servlet-mapping> 
    <servlet-name>springmvc</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 

URLがある場合、これはうまく機能 -

GET /rest/people 

それは

012であれば に失敗
GET /rest/people/1 

400 Bad Requestというエラーが発生しました。The request sent by the client was syntactically incorrect()と表示されます。私はそれが適切に処理することができるように/restで始まるをワイルドカードにはどうすればよい...

それもルーティングされるために春のサーブレットにそれを作ったかわかりませんか?言い換えれば

、私は有効であるために、次のすべてに希望 -

GET /rest/people 
GET /rest/people/1 
GET /rest/people/1/phones 
GET /rest/people/1/phones/23 

編集 - 要求されるようにコントローラー・コード

@Controller 
@RequestMapping("/people") 
public class PeopleController { 

    @RequestMapping(method=RequestMethod.GET) 
    public @ResponseBody String getPeople() { 
     return GsonFactory.getInstance().toJson(LookupDao.getInstance().getPeople()); 
    } 

    @RequestMapping(value="{id}", method=RequestMethod.GET) 
    public @ResponseBody String getPerson(@PathVariable String id) { 
     return GsonFactory.getInstance().toJson(LookupDao.getInstance().getPerson(id)); 
    } 
} 

回答

@matsev /があるかどうかは問題ではありませんでした。

私はパブリックビューの変数名を転置していましたが、私はそれを動作させるためにいくつかの変更を行いました。

オリジナル

私は私がすべてへの警告として、ここではこれを残すに...変数名の不一致は私がやった

@RequestMapping(value="{id}", method=RequestMethod.GET) 
public @ResponseBody String getPerson(@PathVariable String id) { 
    return GsonFactory.getInstance().toJson(LookupDao.getInstance().getPerson(id)); 
} 

を投稿何

@RequestMapping(value="{id}", method=RequestMethod.GET) public @ResponseBody String getPerson(@PathVariable String userId) { return GsonFactory.getInstance().toJson(LookupDao.getInstance().getPerson(userId)); } 

...試合あなたの変数名!

+0

コントローラコードを投稿できますか?私の推測では、 '/ people/{id}'ではなく '/ people'だけをマッピングしているということです。 – matsev

+0

@matsev私はあなたのためにコードを掲載しました。それをチェックしていただきありがとうございます。 web.xmlの –

+0

のマッピングは問題ありません。/rest/people/1のコントローラクラスメソッド()のコードをここに貼り付けることができますか?私は助けることができるかもしれません。 – shashankaholic

答えて

4

{id}/を追加してみてください。

@RequestMapping(value="/{id}", method=RequestMethod.GET) 

それがなければ/rest/people/1とは反対に、idが/rest/people1例えば、人々のURLに直接追加されます。

関連する問題