私は@ModelAttribute
Spring
から文書での例以下の理解を助ける必要があります:私は、我々のモデルオブジェクトが全体現在のコントローラに得ることができる。このような追加的な「価値」undestoodいます(法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();
}
}
}
。本当ですか?
私は自分のコントローラにそのコードを追加することによって、いくつかのテストを行うにしようとしています:
@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