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

タグの本体内に式またはjstlタグを含めることはできません。JSPのドキュメントに従って、本体内に<jsp:include>のみタグを含めることができます。<jsp:param>

要件をよりよく理解するには、次
の質問に答えてください。パラメータ名も動的であるため、これらのパラメータをで表されるjspファイル内にどのように取得すると思います${jspName}か。


それでもここに私の提案のいくつかがあります:
私はデザインを再考し<%@ include file="myJsp.jsp" %>、標準のアクションの代わりにincludeディレクティブ()を使用することを提案します。

または

使用する場合<jsp:include>は、次のいずれかを実行します。

  • 2つ渡す<jsp:param>; 1つはコンマ区切りのnameリスト(name1,name2,name3)を使用し、もう1つはコンマ区切りのリストvaluevalue1、、 )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リストで1つを渡します[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 に答える