我认为我的问题很简单,但是已经 2 天了,我无法弄清楚:
我是 Spring MVC 的新手,我正在尝试实现一个简单的 @Controller 来处理表单。
- GET 请求:我向模型添加了一个新的 PortfolioBean 属性。
- POST 请求:我希望收到具有相同 PortfolioBean 的 @ModelAttribute。
@控制器
public class FormController {
@RequestMapping(value = "/form", method = RequestMethod.GET)
public String getForm(Model model) {
PortfolioBean portfolio = new PortfolioBean();
model.addAttribute("portfolio", portfolio);
return "index";
}
@RequestMapping(value = "/form", method = RequestMethod.POST)
public String postForm(@ModelAttribute("portfolio") PortfolioBean portfolio) {
System.out.println("Received portfolio: " + portfolio.getId());
return "showMessage";
}
}
这是我的 JSP 视图:
...
<form:form action="form" commandName="portfolio" method="post">
Name : <form:input path="name" />
Nick Name : <form:input path="nickName" />
Age : <form:input path="age" />
Mobile : <form:input path="mobNum" />
<input type="submit" />
</form:form>
这是我的 PortfolioBean:
public class PortfolioBean {
private String name;
private String nickName;
private int age;
private String mobNum;
private static int count = 0;
private int id;
public PortfolioBean() {
count++;
id = count;
System.out.println("NEW BEAN: " + id);
}
// setters & getters
}
如您所见,我添加了一个静态计数变量来分配增量 ID,并在构造函数上添加了一个 println("NEW BEAN!")。
我的问题是,当我发布表单时,我没有收到原始的 Bean 对象,而是 Spring 实例化了一个新对象,但我想要我的旧 Bean :(
日志:
GET /form
NEW BEAN: 1
POST /form
NEW BEAN: 2
Received portfolio: 2