让我们考虑这段代码:
@ResponseBody
@RequestMapping(value = "/getFiltered", method = RequestMethod.POST)
public ResponseEntity<OraPhysicalGoodMiniDataWrapper> getFilteredProducts(@RequestBody OraSalesOfGoodsFilters filters) {
return oraProductListController.getFilteredProducts(filters);
}
filters
参数包含名为searchValue
的String。
问题是:当我在json中传递例如searchValue: "(2016)"
时,Spring控制器会收到searchValue=(2016)
。
我尝试使用Java URLDecoder 对其进行解码,但它无效。
我的问题是: 是否有任何Java方法可以解码String中的所有这些字符?或者我应该编写自己的方法吗?
答案 0 :(得分:1)
这是您的问题解决方案。使用javascript或弹簧设置。
Javascript
ng serve --prod
弹簧设置
的pom.xml
var param = {
"searchValue": "(2016)"
};
$.ajax({
type: 'POST',
dataType: 'JSON',
data: JSON.stringify(param),
contentType:"application/json; charset=UTF-8",
url: '/test/filter',
error: function() {
// error
},
success: function(returnJSON) {
// success
}
}):
servlet.xml中
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.0.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.0.4</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.0.4</version>
</dependency>
答案 1 :(得分:1)
Joop Eggen中提及的comment - StringEscapeUtils.unescapeXml(String value)
方法被证明是有用的。
它是 unescapeXml()
,而不是 unescapeJavaScript()
(这是行不通的),因为我将来自前端的值作为JSON(而不是XML)从JavaScript传递,但我很高兴它有效。