当前位置: 首页 > 面试题库 >

如何通过spring控制器映射接收url参数

蔡楚
2023-03-14
问题内容

这个问题看似微不足道,但我无法使其正常工作。我正在用jquery
ajax调用Spring控制器映射。无论URL中的值如何,someAttr的值始终为空字符串。请帮助我确定原因。

-URL称为

http://localhost:8080/sitename/controllerLevelMapping/1?someAttr=6

-控制器映射

@RequestMapping(value={"/{someID}"}, method=RequestMethod.GET)
public @ResponseBody int getAttr(@PathVariable(value="someID") final String id, 
        @ModelAttribute(value="someAttr") String someAttr) {
    //I hit some code here but the value for the ModelAttribute 'someAttr' is empty string.  The value for id is correctly set to "1".
}

问题答案:

您应该使用@RequestParam而不是@ModelAttribute,例如

@RequestMapping("/{someID}")
public @ResponseBody int getAttr(@PathVariable(value="someID") String id, 
                                 @RequestParam String someAttr) {
}

@RequestParam如果选择,您甚至可以完全省略,Spring会假设是这样:

@RequestMapping("/{someID}")
public @ResponseBody int getAttr(@PathVariable(value="someID") String id, 
                                 String someAttr) {
}


 类似资料:
  • null 我不能共享代码,因为它不是公共的。谢谢你调查这件事。

  • 问题内容: 我在以下网址上遇到了麻烦: 使用以下控制器方法进行映射: 当我单击锚定dynamicLink时,问题开始了,它没有将控制权转移到我的控制器,而是在浏览器的地址栏中显示了以下内容: 而且我在applicationContext.xml中有以下映射 如果我从控制器的@RequestMapping中删除{quesId}和从方法签名中删除@PathParam(也从锚中删除问题ID),这一切都很

  • 假设我有以下带有其父类的控制器: 通过调用以下URL检索数据: 服务器请求: 因此我计划在父控制器中从更改为: 然后介绍一个“遗留”控制器: 这就是我所苦恼的,我找不到任何与Spring相关的东西,不管是在StackOverflow还是其他地方。 另外,我有许多控制器和许多方法endpoint,所以我不能手动完成这一操作(例如,通过编辑每个@RequestMapping/@GetMapping注释

  • 我有一个Spring Boot web应用程序,它可以服务于静态页面和基于控制器的页面(ModelAndView)。问题是,控制器可以提供类似于<代码>/{字符串}的服务,而静态页面必须提供<代码>/测试。 问题是控制器映射优先,我需要避免这种情况。如果用户点击测试,则必须将其转发到测试。html静态页面。 我尝试以这种方式使用ViewControlller注册表的order属性,但没有成功: 这

  • 是否可以通过URL的trailing关键字映射spring mvc控制器。例如,假设我有以下URL: 我想有3个控制器方法。第1个url应由控制器“X”处理,第2个url应由方法“Y”处理,第3、4个url应由单个方法“Z”处理。这意味着任何以结尾的url都应仅由方法“z”处理。无论该URL的主要内容是什么。

  • 我将war部署到apache tomcat webapps文件夹中,并在我的rest api url:iGiven like localhost:8080/api/user-profile之后启动了控制台日志下获得的apache tomcat服务 My@RequestMapping(“/API”)@PostMapping(“/User-Profiles”) 但是我得到了404错误。请帮助解决这个问

  • 我试图编写一个restendpoint,它接收application/x-www-form-urlencoded。但是endpoint不接受@requestbody或@requestparam的请求参数 我已经尝试使用MultiValueMap来获取请求参数。但我总是得到0个参数。是否有一种方法可以获取MultiValueMap或其他POJO类的请求值。 -这是application/x-www-