我想将主JPS中的List类型对象传递给include JSP(jsp:include)。由于parm只支持字符串,因此我无法使用parm标记将List类型数据传递给include文件。
使用示例:
<jsp:include page="/jsp/appList.jsp">
<jsp:param name="applications" value="${applications}"/>
</jsp:include>
或者:
<jsp:include page="/jsp/appList.jsp">
<jsp:param name="applications" value="${confirmed_applications}"/>
</jsp:include>
<jsp:include page="/jsp/appList.jsp">
<jsp:param name="applications" value="${unconfirmed_applications}"/>
</jsp:include>
<jsp:include page="/jsp/appList.jsp">
<jsp:param name="applications" value="${canceled_applications}"/>
</jsp:include>
我可以创建一个简单的标记处理程序,但我想知道是否有更简单的方法。
答案 0 :(得分:10)
同意ChssPly76,如果在JSP中生成List,它可能是一个麻烦的迹象,但另一种将对象传递给另一个JSP的替代方法是使用scriplet将其添加到HttpServletRequest对象属性字段中: / p>
带有List的JSP:
<%
request.setAttribute("theList", ListObject);
%>
另一个JSP:
<%
List myList = (List) request.getAttribute("theList");
%>
答案 1 :(得分:7)
这确实是jsp标签的意思。您创建一个.tag文件,该文件接受属性(非参数),可以是任意类型。
有关优秀教程,请参阅this article。
“Params”类似于您在HTTP查询中看到的参数(“?”后面的URL部分)。
答案 2 :(得分:3)
您如何在主JSP中获取该列表?
如果您从模型中获取它(直接/间接请求/会话属性),您可以将属性的名称传递给包含的JSP,并从模型中重新获取它:< / p>
<jsp:include page="/jsp/appList.jsp">
<jsp:param name="applications" value="confirmedApplications"/>
</jsp:include>
如果您在JSP本身生成或修改该列表,那么您确实遇到了更大的问题:-)但是您可以绑定您的列表以在某个属性名称下请求然后使用上述方法。
答案 3 :(得分:2)
假设您将列表放入请求范围并使用applications
作为参数名称,您可以参考此列表${requestScope[param.applications]}
答案 4 :(得分:2)
您可以通过requestScope传递List对象:
<c:set var="listApplications" value="${applications}" scope="request"/>
<jsp:include page="/jsp/appList.jsp" />
在appList.jsp中,您可以使用
检索列表${requestScope.listApplications}
答案 5 :(得分:0)
您可以使用请求或会话对象来传输对象。
优势
请求 - 使用请求,因为与会话对象相比,它的生命周期更短。
会话 - 您可以稍后在其他页面或操作
中检索相同的对象答案 6 :(得分:0)
假设您有parent.jsp和child.jsp。
你想要:
1)包含来自parent.jsp的child.jsp, 2)将一些参数从parent.jsp发送到child.jsp。
执行以下步骤:
1)在parent.jsp中 `
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="items" value="${itemsFromDB}" scope="request"/>
<jsp:include page="child.jsp"/>
` 2)在child.jsp
中<div>
alert("${requestScope.items}");
</div>
多数人。