Formulaires

Un formulaire Spring est une page web classique.

  • Spring fournit un ensemble de taglibs pour faciliter la création de formulaire et le binding de données avec la partie serveur.Création de formulaires.

  • Ecriture du gestionnaire d'envoi de formulaire.

@Controller
@RequestMapping("/clientForm")
public class ClientFormController {

    // ....
    @RequestMapping(method = RequestMethod.GET)
    public String setupForm(Model model) {
        // Création de l'objet du modèle.
        Client client = new Client();
        //Liaison du modèle et de l'objet.
        model.addAttribute("client", client);
        //Renvoi du nom logique de la vue formulaire.
        return "clientForm";
    }
    ...
}

Vue du formulaire

L'utilisation des taglibs est activée dans une JSP par la directive :

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
  • Tous les éléments classiques des formulaires sont présents (checkbox, textarea, ...).

  • Les gestionnaires d'événements sont aussi pris en compte (onclick, ...).

  • En ajout, la liaison aux données et la gestion des messages d'erreurs.

https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/spring-form-tld.html

Exemple de formulaire

<%-- pas besoin de définir une action, celle par défaut convient --%>
<form:form method="post" modelAttribute="client">
    <table>
        <tr>
            <td>Nom</td>
            <td><form:input path="nom" /></td>
        </tr>
        <tr>
            <td>Prenom</td>
            <td><form:input path="prenom" /></td>
        </tr>
    </table>
</form:form>

L'attribut modelAttribute lie les données envoyées à un objet du modèle côté serveur. Les données retournées peupleront le bean identifié.

Envoi de formulaire

@RequestMapping(method = RequestMethod.POST)
public String submitForm(@ModelAttribute("client") Client client) {
    clientService.make(client);
    return "clientSuccess";
}

L'objet client est peuplé selon les données de l'attribut du modèle nommé client. Cet attribut de modèle a été déclaré dans le formulaire.

results matching ""

    No results matching ""