我有一个带有RequestMapping的REST控制器,如下所示:
@RequestMapping(method = RequestMethod.GET)
public List<MyDTO> search(SearchParameters searchParameters) {
// ...
}
并称之为:/data/search?name=some%20value&....
searchParameters
已填充,但这些值未被urldecoded。因此,不要将searchParameter
的属性name
设置为&#34;某些值&#34;它是&#34;一些%20value&#34;。我如何指示Spring对这些值进行urldecode? p>
答案 0 :(得分:1)
一种可能的解决方案是使用Map并将其名称静态存储在类中,例如:
@RequestMapping(method = RequestMethod.GET)
public List<MyDTO> search(@RequestParam Map<String,String> parameters) {
String name = parameters.get(SearchParameters.NAME);
// ...
}
或使用Map构建Object SearchParameters:
@RequestMapping(method = RequestMethod.GET)
public List<MyDTO> search(@RequestParam Map<String,String> parameters) {
SeachParameters searchParameters = new SearchParameters(parameters);
// ...
}
答案 1 :(得分:0)
好的,问题实际上不是解码,而是编码。它是在测试用例中编码的,尽管它不需要。因此,看起来像/data/search?name=some%20value
的网址应该是/data/search?name=some value
的实际空格。