Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在控制器方法中显式获取post参数或查询参数_Java_Spring_Spring Mvc_Spring 4 - Fatal编程技术网

Java 在控制器方法中显式获取post参数或查询参数

Java 在控制器方法中显式获取post参数或查询参数,java,spring,spring-mvc,spring-4,Java,Spring,Spring Mvc,Spring 4,我正在使用注释指示Spring MVC将“web请求参数”(正如Javadoc调用的那样)注入代码中的方法调用中: @RequestMapping(path="/signup-submit", method=RequestMethod.POST) public String signupSubmit(@RequestParam(value="originURL", required=true) String originURL ...) { ... 这个注释显然既适用于POST参数,也适用于U

我正在使用注释指示Spring MVC将“web请求参数”(正如Javadoc调用的那样)注入代码中的方法调用中:

@RequestMapping(path="/signup-submit", method=RequestMethod.POST)
public String signupSubmit(@RequestParam(value="originURL", required=true) String originURL ...) {
...
这个注释显然既适用于POST参数,也适用于URL查询参数,这让我很烦恼。也就是说,查看上面的代码,无法确定
originURL
是帖子正文参数还是URL查询参数。是否有一个注释可用于从其中一个或另一个显式获取它


这就是为什么我还将“web请求参数”放在引号中的原因,因为我认为这不是一个技术术语,我猜它是在松散的意义上使用的“某个参数要么在POST方法体中传递,要么作为URL中的查询参数”。

不是问题的确切解决方案。但似乎有一个简单的黑客。您可以使用
@RequestBody
。这只查找请求主体。若在请求正文中找不到param,则可以确保它来自请求param

与库拉里斯所说的相反,在参数映射中,两者都可能存在

我看到的最好的方法是代理parameterMap,并为每个参数检索检查queryString是否包含“&?=”

请注意,正如Qerub指出的,在进行此检查之前,需要对parameterName进行URL编码

这样就省去了解析,并且仍然只提供URL参数

方法可以是获取查询字符串

    public List<Topic> getTopics(HttpServletRequest req) {
            String queryString = req.getQueryString(); 
    .....
public List getTopics(HttpServletRequest-req){
字符串queryString=req.getQueryString();
.....

关于“Web请求参数”(@RequestHeader),您是对的,因为它包含两个参数,即查询的一部分或请求正文的一部分。

关于
@PathVariable
?您可以使用
路径=“/signup submit/{originURL}”
和@PathVariable(value=“originURL”)一串originURL@StanislavL我认为这只适用于URL路径部分,而不适用于查询参数。此外,如果某个内容仅作为POST body参数存在,如何获取该内容?