问题:
请参阅以下Spring REST示例,如果提交了诸如http://localhost:8080/site/google.com
之类的请求,则Spring返回“ google ”。看起来像Spring将“。”视为文件扩展名,并提取参数值的一半。
Spring必须返回“ google.com ”。怎么办?
SiteController.java
package com.example.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/site")
public class SiteController {
@RequestMapping(value = "/{domain}", method = RequestMethod.GET)
public String printWelcome(@PathVariable("domain") String domain,
ModelMap model) {
model.addAttribute("domain", domain);
return "domain";
}
}
答案 0 :(得分:1)
我相信你可以在@ResourceMapping的路径变量中使用正则表达式。例如,你可以做
{domain:.[\\S]*}
你可能不得不摆弄一些正则表达式以使其正确。 ':'将路径变量名称与正则表达式分开。
答案 1 :(得分:0)
使用您的参数添加“:。+”非常简单:
此处用户名是电子邮件ID
@RequestMapping(value = "checkuser/{username:.+}" , method=RequestMethod.GET)
@ResponseBody
boolean getUserName(@PathVariable("username") String userName){
boolean isUserAvailable = userDao.checkAvailable(userName);
return isUserAvailable;
}
我从URL传递价值,如: baseurl/checkuser/test@test.com
答案 2 :(得分:0)
只需确保您的网址结束' /'和SiteController.java注意到..
change http://xxx/site/google.com to http://xxx/site/google.com/