Spring MVC

@ RequestMapping`と

@PathVariable`の例を見てください。

@RequestMapping("/site")
public class SiteController {

    @RequestMapping(value = "/{q}", method = RequestMethod.GET)
    public ModelAndView display(@PathVariable("q") String q) {

        logger.debug("Site : q : {}", q);
        return getModelAndView(q, "site");

    }//...

次のケースを参照してください。

  1. 入力 ‘/site/google’の場合、 ‘q’は `google`を表示します

  2. 入力 ‘/site/google.com`の場合、「q」には「google」と表示され、ドット

(。)は切り捨てられています!

  1. 入力 ‘/site/google.com.my`の場合、「q」には「google.com」、

最後のドット(。)は切り捨てられます!

  1. `/site/google.com.my.abc`入力の場合、「q」には「google.com.my」が表示されます

  2. 入力

    /site/cloud.google.com`に対して、

    q ‘は `cloud.google`を表示します

最後のドット(。)は常に切り捨てられています。

解決策

これを修正するには、正規表現マッピング

{q: } `

@ RequestMapping`の中で

@RequestMapping("/site")
public class SiteController {

    @RequestMapping(value = "/{q:.+}", method = RequestMethod.GET)
    public ModelAndView display(@PathVariable("q") String q) {

        logger.debug("Site : q : {}", q);
        return getModelAndView(q, "site");

    }//...

さて、入力

/site/google.com`に対して、

q ‘は正しい `google`を表示します