如何将实体从父级 JSP 传递到包含的 JSP

How to pass entity from parent JSP to included JSP

我正在研究 Spring MVC 设计,将对象从一个 Jsp 页面传递到另一个 Jsp 页面是一个非常普遍的要求。但我真的不知道如何处理它。我正在做这样的事情。 控制器代码

Payment payment = new Payment();
        payment.setAmount(1000);
        payment.setName("naveen");
        Party party = new Party("Amit", "sharma");
        payment.setParty(party);

        Payment payment2 = new Payment();
        payment2.setAmount(2000);
        payment2.setName("naveen2");
        Party party2 = new Party("divanshu", "Nanlani");
        payment2.setParty(party2);

        Payment payment3 = new Payment();
        payment3.setAmount(3000);
        payment3.setName("naveen3");
        Party party3 = new Party("Pankaj", "chahal");
        payment3.setParty(party3);

        List<Payment> list = new ArrayList<Payment>();
        list.add(payment);
        list.add(payment2);
        list.add(payment3);
        ModelAndView mv = new ModelAndView();
        mv.addObject("model", payment);
        mv.addObject("list", list);
        mv.setViewName("success");

在控制器中,Payment 对象是用实例变量和 Party 引用准备的。

one.jsp

<c:forEach var="item" items="${list}" varStatus="status">
    <jsp:include page="other.jsp">
        <jsp:param value="${list[status.index]}" name="nextItem"/>
    </jsp:include>

    <br/>

    <c:out value="${item.party.firstName}"></c:out>
    <br/>
</c:forEach>

这里我尝试打印party对象的值,打印成功。但是当将支付对象的引用传递给另一个名为 second.jsp 的页面时。据我所知,它作为字符串传递。

second.jsp

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

Name ------------ ${param.nextItem}.name (1)

<c:set value="${param.nextItem}" var="itm"></c:set>

Name ***********
<c:out value="${itm}.name"></c:out> (2)

在 second.jsp 页面中,第 1 行和第 2 行都打印了类似这样的内容

com.model.Payment@783bda.name

谁能指导我如何在第二页打印名称或 party.firstName。

second.jsp 中,您的 EL 表达式有点不正确。您正在做的是调用 itmtoString() 方法,然后将 ".name" 附加到其输出。变化

<c:out value="${itm}.name"></c:out>

<c:out value="${itm.name}"/>

同时更改:

${param.nextItem}.name

${param.nextItem.name}

jsp:param 将值转换为字符串。尝试:

<c:forEach var="item" items="${list}" varStatus="status">
    <c:set var="nextItem" value="${list[status.index]}" scope="request" />
    <jsp:include page="other.jsp" />
    ...
</c:forEach>