2017-08-23 5 views
0

J'ai une liste d'objets distribués par une étiquette de ressort forEach. Voici le code du jsp:Spring MVC Transférer un objet d'un foreach à un autre contrôleur

<c:forEach items="${liste_fiche}" var="fiche"> 
       <div class="card blue-grey darken-1"> 
        <form:form action="display_fiche" method="post" commandName="fiche" varStatus="status"> 
         <div class="card-content white-text"> 
          <span class="card-title">Fiche numéro ${fiche.id}</span> 
         <p>reference de la fiche : ${fiche.ref_fiche}</p> 
         <p>type de fiche : ${fiche.typeFiche}</p> 
         </div> 
         <div class="card-action"> 

          <button type="submit" action="display_fiche" 
           class="waves-effect waves-light btn">Afficher la fiche</button> 

         </div> 
        </form:form> 
       </div> 
    </c:forEach> 

Le code ci-dessus présente la reuslt suivante: displaying of fiches

Lorsque je clique sur « Afficher la fiche » Je voudrais aller sur un autre contrôleur avec l'objet fiche réelle choisi.

J'ai essayé de le faire par le contrôleur suivant:

@RequestMapping(value="display_fiche", method = RequestMethod.POST) 
private ModelAndView displayFiche(@ModelAttribute("fiche") Fiche fiche, ModelMap modelMap) { 
    System.out.println("Fiche séléctionnée : " + fiche.getId()); 
    return model; 
} 

Je ne sais pas si c'est la bonne façon de le faire, parce que cela ne fonctionne pas. Je reçois toujours un '0' à fiche.getId(). Si ce n'est pas possible, comment puis-je simplement passer seulement l'élément fiche.id?

Répondre

1
<button type="submit" action="display_fiche" class="waves-effect waves-light btn"> 
Afficher la fiche 
</button> 

Créez une entrée masquée pour conserver l'ID cliqué.

Dans le bouton ci-dessus, ajoutez un appel JavaScipt pour stocker l'ID cliqué dans l'entrée masquée avant de soumettre le formulaire.

Mais il semble que vous n'avez pas besoin d'une telle manière compliquée avec form et post. Il suffit d'utiliser la balise <a> habituelle et d'obtenir le mappage du côté du contrôleur. De plus il suffit de passer juste l'ID de la fiche.

<a href="/display_fiche/${fiche.id}" class="waves-effect waves-light btn"> 
Afficher la fiche 
</a> 

et contrôleur

@RequestMapping(value="/display_fiche/{id}", method = RequestMethod.GET) 
private ModelAndView displayFiche(@PathVariable("id") Long id, ModelMap modelMap) { 
    System.out.println("Fiche séléctionnée : " + id); 
    return model; 
} 
+0

Merci pour votre réponse, je pense que je vais utiliser votre deuxième solution. En effet, la requête GET avec un 'href' semble être bon pour moi :) –