如何将实体从父级 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 表达式有点不正确。您正在做的是调用 itm
的 toString()
方法,然后将 ".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>
我正在研究 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 表达式有点不正确。您正在做的是调用 itm
的 toString()
方法,然后将 ".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>