显式获取控制器方法

时间:2017-04-18 14:51:02

标签: java spring spring-mvc spring-4

我正在使用@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“。

中的查询参数

2 个答案:

答案 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,则可以确定它来自请求参数。