我正在使用java脚本中的项目作为前端,使用java作为后端,我的问题是我想使用restangular调用传递一些字符串到我的后端资源。如果传递参数在字符串之间有空格,那么在到达后端资源端之前我得到 500(服务器错误)。
让我们举个例子:
在Java Script:RESTangular call
var myRestCall= Restangular.all('myRoot/myMethod/'+myLocalPath+'/'+folderName);
restPSTFolders.getList().then(function(listPSTFolders){
//my stuff
});
在Java资源:
@ApiOperation(value = "My Method",
notes = "Returns My Method list",
responseContainer = "List",
response = List.class)
@Path("/myMethod/{myLocalPath}/{folderName}")
@GET
@Transactional
@Timed
public List myMethod(@PathParam("myLocalPath") String myLocalPath, @PathParam("folderName") String sFolderName) {
//my stuff
}
在我的示例myLocalPath
参数中,字符串中可以包含空格和特殊字符,因为它可以是任意字符:
要从RESTangular调用传递给后端类,我需要用一些字符替换所有空格,它对我有用,但我不认为这是用任何字符编码特殊字符和空格的好方法,因为替换字符也可以是现有路径的一部分,然后在后端再次替换字符,可能会改变路径。
编辑:如果我将参数作为json对象传递:
var parameterJsonPath = {};
parameterJsonPath={"myLocalPath": pathValue};
var myRestCall= Restangular.all('myRoot/myMethod/'+parameterJsonPath+'/'+folderName);
我没有任何意义: ../ myRoot / myMethod /%5Bobject%20Object%5D无法加载资源:服务器响应状态为500(服务器错误) < / p>
将参数JsonPath设为JSON.stringify(parameterJsonPath);
会将其作为对我无用的字符串传递。
总而言之,有没有什么好方法可以在js中对字符串的特殊字符进行编码,所以在后端,我可以使用编码时使用的相同键来解码该字符串?