Pra*_*ede 5 javascript java spring spring-mvc angularjs
我使用Angularjs向我的服务器发送get http请求.服务器使用Spring MVC响应rest请求.这是我的角网址建筑上的代码片段:
var name="myname";
var query= "wo?d";
var url = "/search/"+query+"/"+name;
Run Code Online (Sandbox Code Playgroud)
这里是Spring MVC Controller:
@RequestMapping( value = "/search/{query}/{name}" , method = RequestMethod.GET , produces = MediaType.APPLICATION_JSON_VALUE )
@ResponseBody
public List<Data> search() {
// search logic
return data;
}
Run Code Online (Sandbox Code Playgroud)
当查询包含问号字符(?)时,我遇到了问题.url被拆分,以便Spring响应:WARN osweb.servlet.PageNotFound - 找不到带有URI的HTTP请求的映射[/ my-server/web/search/wo在DispatcherServlet中,名称为'mvc'
这是正确的,因为问号?介绍请求参数的开头.我试过使用js函数,encodeURI(query)但问号字符没有编码.如何在url中编码问号?谢谢
Javascript具有用于此目的的特殊功能encodeURIComponent
encodeURIComponent转义除以下字符外的所有字符:字母,十进制数字, - _.!〜*'()
同时encodeURI也不编码; , / ? : @ & = + $ #字符.