带有@PathVariable URI的@RequestMapping是不同的

时间:2014-09-03 15:39:09

标签: java html spring spring-mvc

嗨我有一个问题我学习如何使用PathVariable传递值,我有一个带有输入文本和按钮的表单,当你按下它时它会带你到其他页面并显示值,但它不工作当我按下它会把我带到这个URL:

  

http://localhost:8080/appThyme/shoForm1.html?firstname=MyName&submit=

我收到此错误HTTP 404 - /appThyme/showForm1.html

但如果我把这个网址:http://localhost:8080/appThyme/respuesta/Myname它有效,它会以我的名字向我显示我的页面,我怎么能只用按下按钮来完成工作,为什么当我按下按钮时它会添加问号和等于符号到我的URI

 @Controller
 public class HomeController {

 @RequestMapping(value = "/form1", method = RequestMethod.GET)
public String showFormulario2(Model model) {
    logger.info("***PAG formulario***");
    return "form1.html";
}
@RequestMapping(value = "/showForm1/{id}", method = RequestMethod.GET)
public String showForm(Model model, @PathVariable("id") String id) 
{
    String theId= id;
    model.addAttribute("TheID", theId);     
    return "showForm1.html";
}

my form1.html page

<form id="guestForm" th:action="@{/showForm1.html}"  method="get">
 <div>
     <input type="text" name="firstname" id="firstname"></input> 
 </div>

 <div>
     <button type="submit" name="submit">Submit</button>
 </div>
</form>

我的showForm1.html页面

enter code here 
<html>
  <head>
    <title>Home</title>
  </head>
 <body>
<h1>
  Hello world!  
</h1>

 <P>  The value is  ${nombre} </P>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

表单提交不适用于您在此处使用的@PathVariable构造。 @PathVariable旨在与REST样式的URI一起使用,而不是在表单提交上生成的。

如果您将控制器签名更改为如下所示:

@RequestMapping("/showForm1.html", method = RequestMethod.GET)
public String showForm(Model model, @RequestParam("firstname") String id) 
{
    String theId= id;
    model.addAttribute("TheID", theId);     
    return "showForm1.html";
}

然后应该在表单提交时正确调用该方法。