将呈现的JSP片段作为参数传递给另一个JSP

时间:2016-05-16 07:34:41

标签: java jsp

我有一个如下所示的JSP片段:

<div>
    <div>
        <!-- 1 -->
        <h1>Hello Everyone!</h1> 
    </div>
    <div>
        <!-- 2 -->
        <jsp:include page="./anotherJspFragment.jsp">
            <jsp:param name="someName" value="someValue"/>
        </jsp:include>
    </div>
</div>

这个片段在JSP页面中重复多次 - 它已被复制和粘贴,每次出现时只有标记为“1”和“2”的部分发生变化。

此片段include的每个实例都是一个不同的JSP页面,具有不同的参数。

有些看起来像这样:

        <jsp:include page="./firstJspFragment.jsp" />

虽然其他人看起来像这样:

        <jsp:include page="./secondJspFragment.jsp">
            <jsp:param name="someName1" value="someValue1"/>
            <jsp:param name="someName2" value="someValue2"/>
        </jsp:include>

我想创建一个包含所有样板标记的可重用JSP片段,我可以使用它来减少重复。此JSP片段需要将呈现的JSP片段作为参数(firstJspFragment.jspsecondJspFragment.jsp等)。这可能吗?或者我可以使用其他方法吗?

1 个答案:

答案 0 :(得分:0)

好的,所以看起来这样做的方法是在WEB-INF/tags中创建一个标记,例如: myTag.tag包含样板标记

http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPTags5.html

然后,您可以将渲染的页面作为正文传递,例如

<test:myTag title="Hello Everyone">
    <jsp:include page="./firstJspFragment.jsp" />
</test:myTag>   

然后,将在<jsp:doBody />出现的标记中的点处呈现此JSP片段,例如

<%@ attribute name="title" required="true" %>

<div>
    <div>
        <!-- 1 -->
        <h1>${title}</h1> 
    </div>
    <div>
        <!-- 2 -->
        <jsp:doBody />
    </div>
</div>