0
我的建築,在這些控制方式,一種表單處理應用程序:@ModelAttribute正在恢復一些錯誤
//This will prepare the model and populate the form
@RequestMapping(value="verbete",method = RequestMethod.GET, params="new")
public String addVerbete(@ModelAttribute("verbeteform") VerbeteForm verbeteForm,
Map<String, Object> model){
verbeteForm.getNomes().add(new NomesVerbete());
// add one significado
verbeteForm.getSignificados().add(new SignificadosVerbete());
// depois de implementar o Security
verbeteForm.getVerbete().setAutor(usuarioService.buscarUsuarioPorLogin("greati"));
// seta a data
verbeteForm.getVerbete().setDataLancamento(new Date());
// popula categorias
verbeteForm.setCategorias(verbeteService.listarCategorias());
return "editorVerbete";
}
@RequestMapping(value="verbete", params="new", method = RequestMethod.POST)
public String addVerbeteFromForm(@ModelAttribute("verbeteform") VerbeteForm verbeteForm,
Map<String, Object> model){
Verbete verbete = verbeteForm.getVerbete();
List<NomesVerbete> nomes = verbeteForm.getNomes();
List<SignificadosVerbete> significados = verbeteForm.getSignificados();
long idVerbeteSalvo = verbeteService.addVerbete(verbete);
Verbete verbeteSalvo = verbeteService.getVerbetePorId(idVerbeteSalvo);
for(NomesVerbete nome:nomes){
nome.setVerbete(verbeteSalvo);
verbeteService.addNomesVerbete(nome);
}
for(SignificadosVerbete significado:significados){
significado.setVerbete(verbeteSalvo);
significado.setCategoria(verbeteService.getCategoriaPorNome(significado.getCategoria().getNome()));
verbeteService.addSignificadosVerbete(significado);
}
return "editorVerbete";
}
所以,我期待的是,日期和作者會在被設置好的模型,但是當我提交表單時,它表示dataLancamento
(這是一個日期)和autor
的屬性不在模型中,因爲它們在數據庫中不能爲空而引發錯誤。
也許我不明白如何@ModelAttribute
的作品,或者我做錯了什麼。
在第二種方法中將解決方案設置爲dataLancamento
和autor
,但我不知道它是否正確。那麼,你能告訴我一個方法嗎?
(有些話是在葡萄牙...請告訴我,如果這是一個問題。)
嗯,有趣。所以,爲了更新一個對象,如果我有一個像user/edit?id = 32的路徑,當我提交表單時,我需要在控制器中使用這個參數(id)來獲取對象並設置我想要更新的屬性,對吧? – vitorgreati
如果你想更新一些東西,最好是(這是我的意見)把它放在表單中。如果您不希望某個特定字段出現在表單中,則可以使用表單:隱藏標記。 – ftrujillo