使用 <jsp:include> 标记将参数传递给另一个 JSP 文件

Posted

技术标签:

【中文标题】使用 <jsp:include> 标记将参数传递给另一个 JSP 文件【英文标题】:Passing parameters to another JSP file using <jsp:include> tag 【发布时间】:2013-10-09 15:34:51 【问题描述】:

我有一个 JSP 文件,在该文件中我包含另一个 JSP 文件:

<c:forEach var="instanceVar" items="$instanceList">
    <c:set var="instance"><jsp:include page="instance.jsp"/></c:set>
    ...
</c:forEach

在文件 instance.jsp 中,我想使用变量instanceVar。我想用 JSTL 来做。有没有办法做到这一点?

【问题讨论】:

【参考方案1】:
<c:forEach var="instanceVar" items="$instanceList">
    <jsp:include page="instance.jsp">
        <jsp:param name="myVar" value="$instanceVar"/>
    </jsp:include>
</c:forEach>

instance.jsp

<c:out value="$param.myVar"/>

【讨论】:

请问如何在包含的jsp中访问java代码中的param.myVar? 问题是关于 JSTL。而且最好不要把java代码和JSTL混在一起。 成功了*。但就我而言,我不允许通过列表。 jsp 编译器引发错误,说明哪些参数必须是静态的(value="some static value")。不是要否决它,但它并没有解决我的问题。【参考方案2】:

另一种方法是使用 setAttribute()getAttribute()

【讨论】:

@SpringLearner setAttribute() of HttpSessionHttpServletRequest?【参考方案3】:

另一种选择是使用 JSTL 标记 c:set 和请求范围。

<c:set var="instance" value="$your.value" scope="request"/>
<jsp:include page="instance.jsp"/>

【讨论】:

【参考方案4】:

对我有用的解决方案如下

<c:set var="instance" value="$semaforoData" scope="request"/>
<jsp:include page="semaforo.jsp"/>

在jsp文件中,代码为:

<c:forEach var='itemSemaforo' items='$semaforoData' varStatus='loopSemaforo'>
Print data
</c:forEach>

【讨论】:

为我工作,让我有机会传递任何类型的动态对象。它并没有真正传递参数,而是在页面/支持类中创建一个变量,可以在包含的 jsp 中使用。

以上是关于使用 <jsp:include> 标记将参数传递给另一个 JSP 文件的主要内容,如果未能解决你的问题,请参考以下文章

include指令和<jsp:include>标准动作

如何使用 jsp:include 参数标签将对象传递到另一个 jsp

jsp include参数传送接收与应用

<jsp:include page = ... > 和 <%@ include file = ... > 有啥区别? [复制]

JSP include 指令

jsp常用标签和标签库