我需要幫助理解下面的例子與@ModelAttribute
從Spring
文件:(方法populatePetTypes()
)我瞭解@ModelAttribute的權利嗎?
@Controller
@RequestMapping("/owners/{ownerId}/pets/{petId}/edit")
@SessionAttributes("pet")
public class EditPetForm {
// ...
@ModelAttribute("types")
public Collection<PetType> populatePetTypes() {
return this.clinic.getPetTypes();
}
@RequestMapping(method = RequestMethod.POST)
public String processSubmit(
@ModelAttribute("pet") Pet pet,
BindingResult result, SessionStatus status) {
new PetValidator().validate(pet, result);
if (result.hasErrors()) {
return "petForm";
}
else {
this.clinic.storePet(pet);
status.setComplete();
return "redirect:owner.do?ownerId=" + pet.getOwner().getId();
}
}
}
我undestood這個喜歡額外的「價值」,我們的模型對象可以得到整個電流控制器。這是真的嗎?
我試圖做一些測試,通過添加代碼到我的控制器:
@ModelAttribute("user")
public Integer getKod(){
return new Integer(123321);
}
另一種方法是:
@RequestMapping("/register")
public String register(Map<String, Object> map, @ModelAttribute("user") MyUser user, BindingResult result) {
...
}
,現在我儘量只顯示「KOD」到我形式:
<form:form method="post" action="" commandName="user">
(...)
<form:label path="kod">kod</form:label>:
<form:input path="kod"/>
(...)
</form:form>
但我得到:
java.lang.IllegalArgumentException: [email protected]
請大家幫忙!
謝謝,你對我的「模型」感到困惑......現在我將我的「用戶」改爲「kod」,但是「 '只顯示」$ {kod}「,你知道爲什麼這仍然不起作用嗎? –
Maxiq
什麼應用服務器和版本?它實際上是jsp-2.0嗎? – Affe
我在版本1.1.2中使用jstl和taglibs,我的服務器是tomcat 6. – Maxiq