我可以在<jsp:include>标记</jsp:include>的主体内部使用JSTL标记

时间:2012-08-30 05:10:00

标签: jsp jsp-tags jspinclude

我正在尝试包含带有动态参数的文件。参数来自数组。

这是我写的代码:

<jsp:include page="${jspName}">
    <c:if test="${paramList != null}">
        <c:forEach var="paramPair" items="${paramList().getList()}">
            <jsp:param name="${paramPair.getName()}" value="${paramPair.getValue()"/> 
        </c:forEach>
    </c:if>
</jsp:include>

但这给了我一个错误:

Expecting "jsp:param" standard action with "name" and "value" attributes.

有人可以帮我弄清楚如何从参数数组中动态地将这些参数发送到文件中吗?

1 个答案:

答案 0 :(得分:1)

不能<jsp:include>标记的正文中包含任何表达式或jstl标记,根据{<jsp:param>标记,您只能在正文中包含${jspName}个标记{3}}

为了更好地了解您的要求,请回答以下问题:
由于参数名称也是动态的,您如何在<%@ include file="myJsp.jsp" %>表示的jsp文件中获取这些参数?


这里仍然是我的一些建议:
我建议重新考虑设计并使用include指令(<jsp:include>)而不是标准操作。

或者

如果您想使用<jsp:param>,请执行以下任何操作:

  • 传递两个name;一个使用以逗号分隔的name1,name2,name3列表(value),另一个使用以逗号分隔的value1列表(value2value3${jspName} )。在你的inpcuded jsp <c:set name="nameList" value="" /> <c:set name="valueList" value="" /> <c:if test="${paramList != null}"> <c:forEach var="paramPair" items="${paramList().getList()}"> <c:set name="nameList">${nameList},${paramPair.getName()},</c:set> <c:set name="valueList">${valueList},${paramPair.getValue()},</c:set> </c:forEach> </c:if> <jsp:include page="${jspName}"> <jsp:param name="nameListToBePassed" value="${nameList}" /> <jsp:param name="valueListToBePassed" value="${valueList}" /> </jsp:include> 中,做一些简单的字符串操作来获取名称和值。

    <jsp:param>
  • 使用逗号分隔的nameValue列表[name1=value1,name2=value2,name3=value3]传递一个<c:set name="nameValueList" value="" /> <c:if test="${paramList != null}"> <c:forEach var="paramPair" items="${paramList().getList()}"> <c:set name="nameValueList">${nameValueList},${paramPair.getName()}=${paramPair.getValue()},</c:set> </c:forEach> </c:if> <jsp:include page="${jspName}"> <jsp:param name="nameValueListToBePassed" value="${nameValueList}" /> </jsp:include>

    {{1}}

希望这会给出一些指导。