java - 在 Spring 中发布多个表单记录

标签 java spring spring-mvc

我对 Spring 框架很陌生,并且遇到了以下问题: 我正在尝试使用 Spring MVC 3.0 在单个发布请求上插入多条记录 我成功绑定(bind)了 List 对象,它正在 JSP 上填充,当我提交时 请求到达 Controller 方法(post),但返回的对象不包含正确的值,其打印 null。

我的代码如下:

form.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<%@taglib uri="http://www.springframework.org/tags/form" prefix="f"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<f:form commandName="teamBean" method="post">
    <f:input path="players[0].fname" />
    <f:input path="players[0].lname" />
    <f:input path="players[0].phone" />
    <f:input path="players[0].email" />
    <input type="submit" value="submit" />
</f:form>

</body>
</html>

DynaminFormController.java
@Controller
@RequestMapping("/form")
public class DynaminFormController {
List<Player> players = new ArrayList<>();

@RequestMapping(method = RequestMethod.GET)
public String getForm(Map<String, TeamBean> map) {
    TeamBean teamBean = new TeamBean();

    players.add(new Player("dd", "dd", "dd", "dd"));
    players.add(new Player("cc", "cc", "cc", "cc"));
    teamBean.setPlayers(players);
    map.put("teamBean", teamBean);
            return "form";
}

@RequestMapping(method = RequestMethod.POST)
public String postForm(TeamBean teamBean) {
    System.out.println("DynaminFormController.postForm()");
    System.out.println(teamBean);//printing null
    return "view";
}
}

TeamBean.java
public class TeamBean {
private List<Player> players;
    public List<Player> getPlayers() {
    return players;
}

public void setPlayers(List<Player> players) {
    this.players = players;
}

@Override
public String toString() {
    return "TeamBean [players=" + players + "]";
}
}

Player.java
public class Player {

private String fname;
private String lname;
private String phone;
private String email;
public Player(String fname, String lname, String phone, String email) {

    this.fname = fname;
    this.lname = lname;
    this.phone = phone;
    this.email = email;
}
///getters setters...
@Override
public String toString() {
    return "Player [fname=" + fname + ", lname=" + lname + ", phone="
            + phone + ", email=" + email + "]";
}
}

最佳答案

您的 Post 方法需要 @ModelAttribute

@RequestMapping(method = RequestMethod.POST)
public String postForm(@ModelAttribute("teamBean") TeamBean teamBean) {
    System.out.println("DynaminFormController.postForm()");
    System.out.println(teamBean);//printing null
    return "view";
}

关于java - 在 Spring 中发布多个表单记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18288348/

相关文章:

java - Jasper 报告 Excel 导出错误

java - Spring 5.x 缺少请求 header "Accept"

java - 如何在 intellij 中更改文件的只读状态

java - 确定 Spring Bean 可用的属性?

java - libGDX - 如何删除屏幕上现有的 spritebatch?

java - 我想将 excel 转换为 xml

java - 在 eclipse 中使用 Spring MVC 5 的新项目,但出现错误 404

java - 为什么下面代码的输出没有区别?

java - 如何将 Spring Bean 的生命周期与 Web 应用程序的生命周期联系起来?

JAVA : HOW TO Join same table in hibernate and select column's value