Spring控制器如何隐式处理参数?

时间:2016-10-11 11:44:48

标签: java spring spring-mvc

我是Spring框架的新手,也许这是一个简单的问题。

我有如下链接并尝试Spring控制器处理值" 201610061023"这个链接。但是,我的代码没有用。

我知道这个值可以附加为路径中的参数或路径变量,但我只是好奇,我可以隐式传递这个值吗?

非常感谢。

<a href="./Order" name="test">201610061023</a>

@RequestMapping(value = "/Order")
public String requestHandlingMethod(@ModelAttribute("test") String name, HttpServletRequest request) {
    return "nextpage";
}

2 个答案:

答案 0 :(得分:0)

你的a-tag错了,你需要提交id ,没有隐式的方式来提交链接文本(除了很多java脚本代码)

 <a href="./Order/201610061023" name="test">201610061023</a>


@RequestMapping(value = "/Order/{orderId}")
public String requestHandlingMethod(@PathVariable("orderId") long orderId, @ModelAttribute("test") String name, HttpServletRequest request) {
    return "nextpage";
}

 <a href="./Order?orderId=201610061023" name="test">201610061023</a>


@RequestMapping(value = "/Order")
public String requestHandlingMethod(@RequestParam("orderId") long orderId, @ModelAttribute("test") String name, HttpServletRequest request) {
    return "nextpage";
}

请参阅@RequestParam vs @PathVariable了解这两种方法之间的区别

答案 1 :(得分:0)

Spring不会仅仅因为浏览器不会发送链接的标题而处理链接的标题。要发送它,您可以:

  1. 将值添加为参数:<a href="./Order?id=201610061023" name="test">201610061023</a>
  2. 将值添加为路径变量:<a href="./Order/201610061023" name="test">201610061023</a>
  3. 添加一个JavaScript,将标题onClick复制到href或使用document.location发送生成的网址。这可以自动化,但这种情况非常罕见。