0

フォーム処理のためにコントローラーにこれらのメソッドを持つアプリケーションを構築しています。

//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解決策は、2 番目の方法でandを設定することautorですが、それが正しいかどうかはわかりません。それで、道を教えてもらえますか?

(ポルトガル語の単語がいくつかあります... 問題があれば教えてください。)

4

1 に答える 1