Spring MVC将对象从foreach传递到另一个Controller

时间:2017-08-23 13:47:00

标签: spring jsp spring-mvc spring-annotations

我有一个由forEach弹簧标签发出的对象列表。这是jsp的代码:

<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>

上面的代码有以下重复: displaying of fiches

当我点击&#34; Afficher la fiche&#34;我想继续选择实际的fiche对象的另一个控制器。

我尝试通过以下控制器执行此操作:

@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;
}

我不知道这是否是好方法,因为它不起作用。我总是得到一个&#39; 0&#39;到fiche.getId()。如果不可能,我怎么才能只传递fiche.id元素?

1 个答案:

答案 0 :(得分:1)

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

创建一个隐藏的输入以保持点击的ID。

在上面的按钮中添加一个JavaScipt调用,在实际提交表单之前将点击的id存储到隐藏的输入中。

但似乎你不需要formpost这么复杂的方式。使用通常的<a>标记并在控制器端获得映射就足够了。此外,它足以传递恰到好处的身份。

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

和控制器

@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;
}