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

带有{}括号的Spring MVC @Path变量

章琛
2023-03-14
问题内容

我正在使用Spring
Boot开发应用程序。在REST控制器中,我更喜欢使用路径变量(@PathVariabale注释)。我的代码获取了path变量,但它在网址中包含
{} 括号。请任何人建议我解决这个问题

@RequestMapping(value = "/user/item/{loginName}", method = RequestMethod.GET)
public void getSourceDetails(@PathVariable String loginName) {
    try {
        System.out.println(loginName);
        // it print like this  {john}
    } catch (Exception e) {
        LOG.error(e);
    }
}

网址

http://localhost:8080/user/item/{john}

输出控制器

{约翰}


问题答案:

使用http://localhost:8080/user/item/john提交请求来代替。

您为路径变量赋予Spring值“ {john}” loginName,因此Spring通过“ {}”获得它

Web MVC框架 指出

URI模板模式

URI模板可用于通过@RequestMapping方法方便地访问URL的选定部分。

URI模板是 类似于URI的字符串 ,包含一个或多个变量名。 当您用值代替这些变量时,模板将变为URI
。提议的URI模板RFC定义了URI的参数化方式。例如,URI模板
http://www.example.com/users/ {userId}
包含变量userId将值fred分配给变量将产生
http://www.example.com/users/fred。

在Spring MVC中,可以在方法参数上使用@PathVariable批注将其绑定到URI模板变量的值:

@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
 public String findOwner(@PathVariable String ownerId, Model model) {
     Owner owner = ownerService.findOwner(ownerId);
     model.addAttribute("owner", owner);
     return "displayOwner"; 
  }

URI模板“ / owners /
{ownerId}”指定变量名称ownerId。当控制器处理此请求时,ownerId的值将设置为URI适当部分中的值。例如,当请求/ owners /
fred时,ownerId的值为fred。



 类似资料:
  • 我正在开发一个API,它允许使用URL进行搜索,比如: 这个答案几乎是我想要做的,我只是找不到一种方法来定义括号内的值为“任何字符串”,而不是已知名称的列表。

  • 问题内容: 我还没有找到任何官方文档。但是afaik,是否在没有括号的情况下使用我们的类实例化没有关系-只要不涉及参数,对吗? 要么 但是谁能告诉我性能是否有所不同?“更正确”的方法是哪一种?有任何官方文件吗? 问题答案: 性能上的任何差异将绝对可以忽略。 虽然这两种方式都很好,我个人更喜欢使用 ,因为通常情况下,一个方法 是 正在这里所说的,和PHP函数/方法调用时需要。而且,它与带有参数的实例

  • 问题内容: 我注意到,如果使用许多不带括号的DataFrame函数,其行为似乎类似于“属性”,例如 这是如何完成的,是一种好的做法?这是Linux上的熊猫0.15.1 问题答案: 它们是不同的,因此不建议使用,它们清楚地表明这是一种方法并且恰好输出结果,而另一种则表明了预期的输出。 这就是为什么您不应该这样做的原因: 所以好吧,您没有使用括号正确地调用该方法并看到显示为有效的输出,但是如果您引用了

  • 问题内容: 如您所知,角形和细枝形都有共同的控制结构-双花括号。如何更改Angular的默认值? 我知道我可以在Twig中做到这一点,但是在某些项目中,我只能做到JS。 问题答案: 您可以使用service 更改开始和结束插值标签。一个方便的地方是在模块初始化时。 https://docs.angularjs.org/api/ng/provider/$interpolateProvider

  • 我想安装“stabe-baselines3[额外]”,但在PyCharm包中,安装程序只提供“stable-baselines3”。 当尝试通过“pip install”安装时,我确实会遇到以下错误: 我如何获得[额外的]?

  • 这里我理解哈希(#)符号将定义为本地模板变量,但是前面的星号是什么意思呢?还有,有必要吗? 下面是使用括号的示例: 我有点理解周围的括号将它绑定到HTML属性/Angular指令。这是否意味着它们是Angular计算表达式的指针?就像是Angular 1中的的等价物? 我猜真正的问题是,这些符号在Angular 2中有特殊的含义吗,知道何时使用每一个的最简单的方法是什么?谢谢!!