我正在使用@RequestParam注释来指示Spring MVC在我的代码中将“Web请求参数”(如Javadoc所称的那样)注入方法调用中:
@RequestMapping(path="/signup-submit", method=RequestMethod.POST)
public String signupSubmit(@RequestParam(value="originURL", required=true) String originURL ...) {
...
我很担心这个注释显然适用于POST参数和URL查询参数。即查看上面的代码,无法确定originURL
是POST主体参数还是URL查询参数。是否有一个注释我可以用来明确地从其中一个获得它?
这就是为什么我也将“web request parameter”放在引号中,因为我不认为这是一个技术术语,我想它是在松散意义上使用的“某些参数要么在POST方法体中传递,要么作为URL“。
中的查询参数答案 0 :(得分:2)
与cularis所说的相反,参数图中可以存在两者。
我看到的最好的方法是代理参数Map,并为每个参数检索检查queryString是否包含“&?=”。
请注意,在进行此项检查之前,parameterName需要进行URL编码,正如Qerub指出的那样。
这可以节省您的解析,但仍然只提供URL参数。
方法可以是获取查询字符串..
public List<Topic> getTopics(HttpServletRequest req) {
String queryString = req.getQueryString();
.....
关于“Web-Request-Parameter”(@RequestHeader),你是对的,因为它由两个参数组成,即要么是查询的一部分,要么是请求体的一部分。
答案 1 :(得分:0)
不是您问题的确切解决方案。但似乎有一个容易入侵的黑客。您可以使用@RequestBody
。这只查找请求正文。如果在请求正文中找不到param,则可以确定它来自请求参数。