将对象从JSP传递到Controller

时间:2018-08-14 09:25:06

标签: jsp spring-boot

我正在尝试将myObject和几个成员变量从JSP发布回Spring Boot Web应用程序中的控制器。 控制器:

  @Controller
  public class MainController {
      @PostMapping("/myResult") 
      public String myResult(MyObject myObject ,  Model model,BindingResult bindingResult )  {
      ...}
}

JSP:

<TABLE>
    <TR><TD>
        <A HREF='myResult?var1=<c:out value="${myObject.var1}"/>&var2=<c:out value="${myObject.var2}"/>&var3=<c:out value="${myObject.var3}"/>'>My label</a>
    </TD></TR>
</TABLE>

以上方法有效,但我必须在HREF中传递myObject的每个成员变量。另外,您不能使用HREF进行发布,因此我必须将控制器注释为@GetMapping,这是您不应该做的。 要使用@PostMapping,我必须使用表单标签,然后再次声明myObject中的每个成员变量为隐藏字段,例如

<TABLE>
    <TR><TD>
                 <form:form method="post" modelAttribute="myObject" action="myResult">
                 <form:input path="var1" type="hidden" value="${myObject.var1}"></form:input>
                 <form:input path="var2" type="hidden" value="${myObject.var2}"></form:input>
                 <form:input path="var3" type="hidden" value="${myObject.var3}"></form:input>
                 <input type="submit" value="My label">
            </form:form>
    </TD></TR>
</TABLE>

我必须对许多对象执行多次操作,其中一些对象具有许多成员变量。 有谁知道是否有一种更简单的方法将对象从JSP传递到Controller,而不必单独声明每个成员变量

1 个答案:

答案 0 :(得分:0)

您可以通过通过ajax调用发送并使用JSON.stringify方法来实现此目的,在该方法中,您将所有带有键值的数据传递给

$
            .ajax({
                type : requesttype, //Post,Put
                url : url,
                data : JSON.stringify({
                            "var1":var1,
                            "var2":var2,
                            "var3":var3     
                        }),
                success: function(data){
                 console.log(data);
                },
                error : function(e) {
                        console.log("Error"+e);

                        },
                dataType : "json",
                contentType : "application/json"
            });

现在,当此数据发送到您的控制器时,它需要与某些POJO(例如用户POJO)进行映射,因此,您可以下载相应的jackson json jar或jackson xml jar来映射您的POJO,在我的情况下为JSON您下载JSON jar。

,当您收到它时,就这样

@PostMapping("/myResult") 
    public String myResult(@RequestBody User user){

}

请记住,您的JSP ajax调用中的密钥名称应与POJO相同

JSON依赖性:

 <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
     </dependency>