1

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

这是我写的代码:

<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.

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

4

1 回答 1

1

根据JSP 文档,您不能在标签正文中包含任何表达式或 jstl 标签<jsp:include>,您只能在正文中包含标签。<jsp:param>

为了更好地理解您的需求,请回答这个问题:
由于参数名称也是动态的,您认为如何在由 表示的 jsp 文件中获取这些参数${jspName}


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

或者

如果要使用<jsp:include>,请执行以下任一操作:

  • 通过两个<jsp:param>;一个带有逗号分隔name列表 ( name1,name2,name3),另一个带有逗号分隔value列表 ( value1, value2, value3)。在您包含的 jsp${jspName}中,执行一些简单的字符串操作以获取名称和值。

    <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>
    

希望这能给一些方向。

于 2012-08-30T08:46:38.073 回答