Comment passer des valeurs thymeleaf (th: object) au contrôleur.
HTML:
<form id="searchPersonForm" action="#" th:object="${person}" method="post" >
</form>
SearchPersonController:
@RequestMapping(value = "/modify/{pid}", method = RequestMethod.GET)
public String modifyPersonData(Principal principal, @ModelAttribute("person") Person person, UserRoles userRoles, Model model, @PathVariable("pid") Long pid ) {
//modify data
}
J'essaie de passer comme @ModelAttribute("person") Person person
mais cela ne récupère pas les valeurs de formulaire de la page précédente.
Quelqu'un peut-il aider à ce sujet.
Merci.
Utilisez de préférence th:action
comme attribut de formulaire au lieu de action
, et spécifiez la liaison comme suit:
<form th:action="@{/the-action-url}" method="post"
th:object="${myEntity}">
<div class="modal-body">
<div class="form-group">
<label for="name">Name</label> <input type="text"
class="form-control" id="name" th:field="*{name}"> </input>
</div>
<div class="form-group">
<label for="description">Description</label> <input type="text"
class="form-control" id="description"
th:field="*{description}"> </input>
</div>
</div>
</form>
Je soutiens ce formulaire avec un contrôleur Spring qui initialise l'attribut de modèle (objet myEntity
dans le formulaire). Il s'agit de la partie pertinente de la classe de contrôleur:
@ModelAttribute(value = "myEntity")
public Entity newEntity()
{
return new Entity();
}
Le @ModelAttribute
l'annotation garantit que l'objet de modèle est initialisé par Spring pour chaque demande.
Définissez un modèle nommé "commande" lors de la première demande d'obtention à votre contrôleur:
@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView getRanks(Model model, HttpServletRequest request)
{
String view = "the-view-name";
return new ModelAndView(view, "command", model);
}
Et, pour accéder au modèle tel qu'il résulte après la soumission du formulaire, implémentez la méthode relative:
@RequestMapping(value = "/the-action-url", method = RequestMethod.POST)
public View action(Model model, @ModelAttribute("myEntity") Entity myEntity)
{
// save the entity or do whatever you need
return new RedirectView("/user/ranks");
}
Ici, le paramètre annoté de @ModelAttribute
est automatiquement lié à l'objet soumis.