2010-04-29 3 views
0

Je construis une application de ressort de mvc. Maintenant, le problème que j'ai est le suivant. J'ai un contrôleur qui ajoute DayInfo[][] à mon ModelMap. (DayInfo a un id, un title (String) et Text (également String).Spring mvc: controller retourne [] [], utilisable en jsp avec foreach, mais comment lier?

Maintenant, le problème que j'ai est que je n'ai aucun problème afficher ce DayInfo[][] avec <foreach> balises dans mon jsp.

Cependant, je Sortez la propriété Title en tant que zone de saisie (texte de type), et j'aimerais pouvoir mettre à jour cette valeur (et donc l'enregistrer pour être une base de données mais cela ne devrait pas poser de problème). avoir de la difficulté à lier cette valeur à la boîte de saisie pour qu'elle soit effectivement renvoyée au contrôleur

Si quelqu'un a un conseil, il serait le bienvenu.

Répondre

1

Je ne l'ai jamais fait avec des tableaux multidimensionnels mais ça devrait être quelque chose comme ça (même si je ne l'ai pas essayé, c'est juste pour vous donner une idée). Dans la JSP, vous devez définir le nom de l'entrée à chaque indice, quelque chose comme ceci:

<c:forEach var="row" items="${days}" varStatus="statusRow"> 
    <c:forEach var="day" items="${row}" varStatus="statusCol"> 
     <input type="text" name="days[${statusRow.index}][${statusCol.index}].title" value="${day.title}"/> 
    </c:forEach> 
</c:forEach> 

et dans le contrôleur vous devez préparer jours variables de sorte que la taille du tableau est le même que celui que vous obtenez de la JSP. Vous pouvez donc utiliser la méthode @ModelAttribute pour préparer le tableau (cette méthode sera exécutée avant la méthode @RequestMapping).

@ModelAttribute("days") 
public getDays(){ 
    DayInfo[][] days; 
    //Here you have to instantiate the days to prepare it so it can be filled 
    //You can load for example the data from the database 
    return days; 
} 

@RequestMapping("/yourURL") 
public String getFormData(@ModelAttribute("days")DayInfo[][] days){ 
    //Here in days you should have the data from the form overriding 
    // the one from the database 
} 

J'espère que cela aide et désolé s'il y a une erreur, même si j'écris sans l'essayer.

Questions connexes