J'essaie de mettre à jour un objet persistant sous forme d'utilisateur.
Mon POJO Classe:SpringMVC + Hibernate - Attribut de modèle et mise à jour
public Class MyModel {
int primKey;
String value;
// getter setter
}
Méthodes du contrôleur:
@RequestMapping(value="/update/{id}", method=RequestMethod.GET)
public String getEditView(@PathVariable int id, ModelMap model) {
MyModel mymodel = modelService.getModel(id);
model.addAttribute("mymodel", mymodel);
return "/edit";
}
@RequestMapping(value="/update", method=RequestMethod.POST)
public String updateModel(@ModelAttribute("mymodel") MyModel mymodel, HttpSession session) {
session.setAttribute("status", modelService.update(mymodel) ? "success" : "error");
return "redirect:/home";
}
Et ma forme d'édition:
<form:form modelAttribute="mymodel" role="form" method="post" action="/update">
<label>Enter new name:</label>
<form:input path="value"/>
<input type="submit" class="btn btn-default" value="Update" />
</form:form>
Maintenant, ma question est quand je reçois attribut modèle "mymodel" dans updateModel (), le champ "valeur" est rempli correctement mais le champ "primKey" est mis à 0 ce qui conduit à un échec dans la méthode de mise à jour de Hibernate Session. Passer un objet persistant comme "mymodel" facilite l'affichage du formulaire de mise à jour car toutes les valeurs mappées sont définies automatiquement et l'utilisateur peut facilement les modifier. Donc, y a-t-il un moyen de gérer cela ou devrais-je passer un nouvel attribut MyModel comme modèle et mettre à jour l'objet persistant après?
Etes-vous sûr que votre champ 'value' est rempli lorsque vous chargez le formulaire de mise à jour (GET) et que vous envoyez également votre formulaire (POST)? –
Oui c'est. Mais il semble que je reçois un objet totalement nouveau. – user2578525