无法从另一个java应用程序发送的Spring应用程序中接收表单数据

时间:2014-12-18 14:40:18

标签: java spring-mvc tomcat url-encoding html-form-post

我试图将一个HTML表单从遗留的Java应用程序发布到基于Spring的java应用程序。但是那里不能接收表单字段。 你能帮忙解决一下如何解决这个问题。 注意:我将tomcat 5.5中的表单发布到tomcat 6中的新Spring应用程序,尽管这两个容器都位于同一服务器中。 下面我给出了代码片段:

我从旧版应用程序发送的表单:

<form id ="user_Spring" method="POST" action="http://new_application_url/app-root/" ENCTYPE="application/x-www-form-urlencoded">
    <input type="hidden" name="login" value='<%=user_Login %>'>
</form>
<a href="#" onclick="document.getElementById('user_Spring').submit();"><font color="red"></>New Application</font></a> | 

我在Spring MVC Controller中定义了检索表单数据的方法:

@RequestMapping(value = "/" , method = RequestMethod.POST)
    public String getMethod(@RequestParam String id ,ModelMap model, HttpServletRequest request){

         model.addAttribute("login", id);
         return "index";
    }

我在firebug中遇到的错误:

enter image description here

2 个答案:

答案 0 :(得分:0)

你没有从表单中发送id param,所以在你的表单中你遗漏了类似

的内容
 <input type="hidden" name="id" value='[SOME VALUE]'>

答案 1 :(得分:0)

您正在发送一个名为“login”的表单参数,但您希望它可以神奇地绑定到名为“id”的方法参数。

将method参数重命名为'login'或通过指定HTTP param名称来限定它:

@RequestMapping(value = "/" , method = RequestMethod.POST)
public String getMethod(@RequestParam("login") String id ,ModelMap model, HttpServletRequest request){

         model.addAttribute("login", id);
         return "index";
    }

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-requestparam