ChatGPT解决这个技术问题 Extra ChatGPT

Spring mvc @PathVariable

你能给我一个简短的解释和一个在 spring mvc 中使用 @PathVariable 的示例吗?请包括您如何键入 url?
我正在努力获取正确的 url 来显示 jsp 页面。谢谢。

通过 spring mvc 控制器显示 jsp 是通过视图或说 ModelAndView 完成的。 @PathVariable 用于在控制器端获取变量名称及其值的注释。例如 www.abcd.com/api/value=34455&anotherValue=skjdfjhks 这里 valueanotherValue 是变量,您可以使用 @PathVariable("value") int value和@PathVariable("anotherValue")String anotherValue

C
Community

假设你想写一个 url 来获取一些订单,你可以说

www.mydomain.com/order/123

其中 123 是 orderId。

所以现在你将在 spring mvc 控制器中使用的 url 看起来像

/order/{orderId}

现在可以将订单 ID 声明为路径变量

@RequestMapping(value = " /order/{orderId}", method=RequestMethod.GET)
public String getOrder(@PathVariable String orderId){
//fetch order
}

如果您使用 url www.mydomain.com/order/123,则 orderId 变量将由 spring 填充值 123

另请注意,PathVariable 与 requestParam 不同,因为 pathVariable 是 URL 的一部分。使用请求参数的相同 url 看起来像 www.mydomain.com/order?orderId=123

API DOC
Spring Official Reference


在使用 pathVariable。我需要导入一些东西吗?或任何依赖?谢谢。
你只需要导入 PathVariable 注解 import org.springframework.web.bind.annotation.PathVariable
是的,请提供一些详细信息,您要做什么以及问题是什么
我想要 www.mydomain.com/order/abc.def,现在在控制器中我只得到 abc
A
Ahmed Ashour

看看下面的代码片段。

@RequestMapping(value="/Add/{type}")
public ModelAndView addForm(@PathVariable String type) {
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("addContent");
    modelAndView.addObject("typelist", contentPropertyDAO.getType() );
    modelAndView.addObject("property", contentPropertyDAO.get(type,0) );
    return modelAndView;
}

希望它有助于构建您的代码。


我不熟悉模型和视图。呵呵。谢谢顺便说一句..期待在我的项目中实施这个..但我需要先完成它。 :)
我认为您需要编写 @PathVariable("type") 以绑定到路径。
我想要 www.mydomain.com/order/abc.def,现在在控制器中我只得到 abc
得到它使用正则表达式 [a-zA-z0-9.]
o
ochiWlad

如果您有带有路径变量的 url,例如 www.myexampl.com/item/12/update,其中 12 是 id,create 是您要用于指定执行的变量,例如使用单个表单进行更新和创建,您在控制器中执行此操作。

   @PostMapping(value = "/item/{id}/{method}")
    public String getForm(@PathVariable("id") String itemId ,  
        @PathVariable("method") String methodCall , Model model){

     if(methodCall.equals("create")){
            //logic
      }
     if(methodCall.equals("update")){
            //logic
      }

      return "path to your form";
    }

这种机制确保路径变量与给定变量相关联。
A
Ajinkya

@PathVariable 用于从 URL 中获取值

例如:得到一些问题

www.stackoverflow.com/questions/19803731

这里有些问题 id 作为 URL 中的参数传递

现在要在 controller 中获取此值,您只需在方法参数中传递 @PathVariable

@RequestMapping(value = " /questions/{questionId}", method=RequestMethod.GET)
    public String getQuestion(@PathVariable String questionId){
    //return question details
}

这个表格看起来如何?我可以使用其中一个输入值来指定 {ISBN} 值吗?如果是,我如何构造表单参数 th:action 的完整 URL?
0
0gam

指示方法参数应绑定到 URI 模板变量的注释。支持 RequestMapping 带注释的处理程序方法。

@RequestMapping(value = "/download/{documentId}", method = RequestMethod.GET)
public ModelAndView download(@PathVariable int documentId) {
    ModelAndView mav = new ModelAndView();
    Document document =  documentService.fileDownload(documentId);

    mav.addObject("downloadDocument", document);
    mav.setViewName("download");

    return mav;
}

G
Gagan

让我们假设您点击的网址为 www.example.com/test/111 。现在您必须将值 111(它是动态的)检索到您的控制器方法。有时您将使用 @PathVariable,如下所示:

@RequestMapping(value = " /test/{testvalue}", method=RequestMethod.GET)
public void test(@PathVariable String testvalue){
//you can use test value here
}

所以变量值是从url中检索的


A
Arahan Jha

它是用于映射/处理动态 URI 的注释之一。您甚至可以为 URI 动态参数指定正则表达式以仅接受特定类型的输入。

例如,如果使用唯一编号检索图书的 URL 为:

URL:http://localhost:8080/book/9783827319333

可以使用@PathVariable 获取 URL 最后表示的数字,如下所示:

@RequestMapping(value="/book/{ISBN}", method= RequestMethod.GET)

public String showBookDetails(@PathVariable("ISBN") String id,

Model model){

model.addAttribute("ISBN", id);

return "bookDetails";

}

简而言之,它只是另一个从 Spring 中的 HTTP 请求中提取数据。


这个表格看起来如何?我可以使用其中一个输入值来指定 {ISBN} 值吗?如果是,我如何构造表单参数 th:action 的完整 URL?
S
Saurabh Juneja

看看下面的代码片段。

@RequestMapping(value = "edit.htm", method = RequestMethod.GET) 
    public ModelAndView edit(@RequestParam("id") String id) throws Exception {
        ModelMap modelMap = new ModelMap();
        modelMap.addAttribute("user", userinfoDao.findById(id));
        return new ModelAndView("edit", modelMap);      
    }

如果您希望完整的项目了解它是如何工作的,请从以下链接下载它:-

UserInfo Project on GitLab