0
我有一個非常簡單的控制器,1)加載一個窗體(視圖)使用的對象和2)接受通過該窗體提交的對象的更改。控制器( 「PersonController」)是這樣的:@ModelAttribute對象字段沒有返回到控制器
@RequestMapping(value="/accountsettings/{personid}")
public String loadAccountSettings(@PathVariable("personid") int personid,
ModelMap model){
Person person = personService.find(personid);
model.addAttribute("person",person);
return "account-settings-form";
}
@RequestMapping(value="/saveaccountsettings")
public String saveSettings(@ModelAttribute("person") Person person){
personService.update(person);
return "account-settings-form";
}
「人」 的POJO看起來是這樣的:
public class Person {
private id int;
private String name;
private String username;
private String phoneNumber;
//getters and setters follow
}
我的形式(帳戶設置 - form.jsp)有以下幾點:
<form:form commandName="person" action="/saveaccountsettings">
<form:input path="name" /><br />
<form:input path="username" /><br />
<form:input path="phoneNumber" /><br />
<input type="submit" />
</form:form>
我遇到的問題是,當窗體加載數據(loadAccountSettings),符合市場預期(名稱,用戶名和電話號碼)的所有字段將被填充。但是,當我去處理更新時,即使數據在表單中,並且(在使用Firebug進行檢查時),我也會將該值作爲參數傳回,但電話號碼字段被視爲空。
有誰知道爲什麼控制器會錯過這個字段的(person.phoneNumber)值?
在此先感謝。
-e
你能告訴你的Person類的代碼與它的getter和setter方法? –
我同意@JapanTrivedi,這似乎是phoneNumber的setter問題。還有一件事:根據[this](http://chompingatbits.com/2009/08/25/spring-formtag-commandname-vs-modelattribute/) – Dani
,您可能想要使用「modelAttribute」而不是「commandName」 @Dani是的,你是正確的有一個問題在那裏** commandName **在表單標籤。我沒有明白。 :) eugene請嘗試更改** commandName **到** modelAttribute **在您的表單標記,因爲在您指定爲** @ ModelAttribute ** –