0

问题:

http://localhost:8080/site/google.com参见以下 Spring REST 示例,如果提交了诸如此类的请求,则 Spring 返回“<strong>google”。看起来像春天对待“。” 作为文件扩展名,并提取参数值的一半。

Spring 必须返回“<strong>google.com”。怎么办?

站点控制器.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";

}

}
4

3 回答 3

1

我相信您可以在@ResourceMapping 的路径变量中使用正则表达式。例如,你可以做

{domain:.[\\S]*}

您可能不得不摆弄一些正则表达式才能使其正确。':' 将路径变量名称与正则表达式分开。

于 2013-02-06T17:47:48.503 回答
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

于 2013-07-16T13:07:00.023 回答
0

只需确保您的 url 以 '/' 结尾并且 SiteController.java chage 注意到..

change http://xxx/site/google.com to http://xxx/site/google.com/

于 2014-07-31T12:46:32.940 回答