我正在尝试将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,而不必单独声明每个成员变量
答案 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>