私の問題はかなり単純だと思いますが、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!") を追加しました。
私の問題は、フォームを POST すると、元の Bean オブジェクトを受信せず、代わりに Spring が新しいオブジェクトをインスタンス化することですが、古い Bean が必要です:(
ログ:
GET /form
NEW BEAN: 1
POST /form
NEW BEAN: 2
Received portfolio: 2