Spring mvc RequestMapping未将?(问号)标识为java REST调用传递的参数的一部分

Spring mvc RequestMapping未将?(问号)标识为java REST调用传递的参数的一部分,spring-mvc,Spring Mvc,遵循以下步骤: @RequestMapping(value = {"/abcd/id={id}","/abcd?id={id}"}, method = RequestMethod.GET) 公共ModelAndView测试(@PathVariable(“id”)字符串id){ 我在我的代码中指定了上面两种类型的值。当我们调用uri时,前者可以正常工作,但后面没有被识别(即,@RequestMapping没有识别?(问号) 作为传递参数的一部分。URL(和URI)中的问号用于将参数与路径分开 @

遵循以下步骤:

@RequestMapping(value = {"/abcd/id={id}","/abcd?id={id}"}, method = RequestMethod.GET)
公共ModelAndView测试(@PathVariable(“id”)字符串id){

我在我的代码中指定了上面两种类型的值。当我们调用uri时,前者可以正常工作,但后面没有被识别(即,
@RequestMapping
没有识别?(问号) 作为传递参数的一部分。

URL(和URI)中的问号用于将参数与路径分开

@RequestMapping
将路径作为其
属性。因此,它不应包含问号


因此,基本上您的第一种情况被解释为路径(尽管是一个奇怪的情况),而第二种情况完全错误。

您应该使用
@RequestParam
作为方法参数在URL上获取参数

@RequestMapping(value = "/abcd", method = RequestMethod.GET)
public void test(@RequestParam String id) {
    // your code here
}

我想从我的java代码中进行此调用。我将如何进行此调用?是的,这与单个参数一起工作。如果有多个参数,请告诉我如何编写相同的参数,因为@RequestMapping(value={“/EspDashBoard”},method=RequestMethod.GET)公共模型和查看getCaseDesc(@PathVariable(“groupId”)字符串groupId,@RequestParam(“subGroupID”)字符串subGroupID,@user1523256您将PathVariables和RequestParams混为一谈您可以将
@RequestParam
@PathVariable
@RequestMapping(value=“/EspDashBoard/{groupId}”,method=RequestMethod.GET)公共模型和查看getCaseDesc(@PathVariable(“groupId”)字符串groupId,@RequestParam(“SUBSUBID“)字符串SUBSUBID);
调用此方法的示例URL:
http://localhost:8080/app/controllerMapping/EspDashBoard/50?subGroupID=100
@PathVariable
通常作为ID用于强制参数。处理程序是否可以处理这两种请求?1)2)如果我定义了两个独立的控制器,Spring会抱怨说“已经有一个控制器方法…映射了”,我想像这样进行url调用:()。我将如何使用java代码?请看@jelies answer。您应该记住的一件事是,为要绑定到方法参数的请求参数添加一个名称,使其成为:
@RequestParam(“id”)字符串id
。最好将id作为路径的一部分,这样它就变成了
http://localhost:8080/projectName/rest/abcd/42084