如何将JSP的Model对象列表传递至被包含JSP页面?
解决JSP包含页面时传递集合对象的问题
问题根源
<jsp:param>只能传递字符串类型的参数,当你传入集合对象时,它会自动调用对象的toString()方法把集合转成类似[com.example.Lead@xxxx, ...]的字符串形式,被包含页面拿到的只是一串文本,自然没法用<c:forEach>遍历。
可行解决方案
方案1:利用request作用域共享对象
<jsp:include>是服务器端包含,原页面和被包含页面共享同一个request作用域,直接把集合存入request,被包含页面直接读取即可:
原页面代码修改为:
<!-- 把集合存入request作用域 --> <c:set var="leadTypeList" scope="request" value="${leadType}"/> <!-- 直接引入页面,无需传param --> <jsp:include page="leadCreate.jsp"/>
在leadCreate.jsp中直接使用:
<c:forEach items="${leadTypeList}" var="leadItem"> <!-- 你的遍历逻辑,比如输出对象属性 --> ${leadItem.propertyName} </c:forEach>
方案2:通过请求属性手动传递(备选)
如果需要更明确的传递逻辑,也可以在原页面通过脚本设置请求属性,不过方案1更简洁:
<% // 把控制器传递的leadType存入request属性 request.setAttribute("leadTypeList", request.getAttribute("leadType")); %> <jsp:include page="leadCreate.jsp"/>
被包含页面的遍历代码和方案1一致。
内容的提问来源于stack exchange,提问作者Yadhu Krishna
相关产品推荐
相关产品推荐

