Spring MVC 3 - 可选的URL参数

Adr*_*zyk 2 spring spring-mvc url-mapping

我写了以下代码:

@Controller
@RequestMapping("/page{number}")
public class IndexController
{ 
    @RequestMapping(method = RequestMethod.GET)
    public String printIndex(ModelMap model, @PathVariable int number)
    {
        String numberText;

        switch (number)
        {
            case 0:
                numberText = "Zero";
                break;
            case 1:
                numberText = "One";
                break;
            default:
                numberText = "Unknown";
                break;
        }

        model.addAttribute("number", numberText);

        return "page";
    }
}
Run Code Online (Sandbox Code Playgroud)

而且我想要实现像此方法控制的page1.html,page2.html,page3.html这样的网址,但有一个例外:page.html应该给出与page1.html相同的结果.我正在寻找能使{number}成为可选项的东西,现在它是必需的.

我说有没有办法做到这一点?

/

小智 15

你可以使用这样的东西:

@RequestParam(value = "name", defaultValue = "") Long name
Run Code Online (Sandbox Code Playgroud)

请记住,您必须使用包装器(如Long)而不是原始包装器(如长).

我希望这会有用.

  • 即使技术上不是正确的答案,在我的情况下对我来说也很有用.我很高兴它在这里. (2认同)

Bij*_*men 7

这个怎么样:

@Controller
public class IndexController
{ 
    @RequestMapping("/page{number}")
    public String printIndex(ModelMap model, @PathVariable("number") int number)
    {
        String numberText;

        switch (number)
        {
            case 0:
                numberText = "Zero";
                break;
            case 1:
                numberText = "One";
                break;
            default:
                numberText = "Unknown";
                break;
        }

        model.addAttribute("number", numberText);

        return "page";
    }
    @RequestMapping("/page")
    public String printIndex(ModelMap model)
    {
        return printIndex(model, 1);
    }    
}
Run Code Online (Sandbox Code Playgroud)