相关疑难解决方法(0)

使用Spring 3.0,我可以创建一个可选的路径变量吗?

使用Spring 3.0,我可以有一个可选的路径变量吗?

例如

@RequestMapping(value = "/json/{type}", method = RequestMethod.GET)
public @ResponseBody TestBean testAjax(
        HttpServletRequest req,
        @PathVariable String type,
        @RequestParam("track") String track) {
    return new TestBean();
}
Run Code Online (Sandbox Code Playgroud)

在这里,我想/json/abc/json称为相同的方法.
一个明显的解决方法是声明type为请求参数:

@RequestMapping(value = "/json", method = RequestMethod.GET)
public @ResponseBody TestBean testAjax(
        HttpServletRequest req,
        @RequestParam(value = "type", required = false) String type,
        @RequestParam("track") String track) {
    return new TestBean();
}
Run Code Online (Sandbox Code Playgroud)

然后/json?type=abc&track=aa/json?track=rr将工作

rest spring

175
推荐指数
6
解决办法
14万
查看次数

Spring Web MVC:对请求参数和路径变量使用相同的请求映射

有没有办法表明我的Spring Web MVC控制器方法应该通过作为URI路径的一部分传递ID的请求来匹配...

@RequestMapping(method=RequestMethod.GET, value="campaigns/{id}")
public String getCampaignDetails(Model model, @PathVariable("id") Long id) {
Run Code Online (Sandbox Code Playgroud)

...或者如果客户端将ID作为样式中的HTTP请求参数发送...

@RequestMapping(method=RequestMethod.GET, value="campaigns")
public String getCampaignDetails(Model model, @RequestParam("id") Long id) {
Run Code Online (Sandbox Code Playgroud)

在我看来,这是一个非常常见的真实URL方案,我不想添加重复的代码,但我还没有找到答案.任何建议都非常欢迎.

编辑:事实证明,目前似乎(使用Spring MVC <= 3.0)没有办法实现这一点,请参阅Javi答案中的讨论.

java spring annotations spring-mvc

37
推荐指数
1
解决办法
6万
查看次数

标签 统计

spring ×2

annotations ×1

java ×1

rest ×1

spring-mvc ×1