【问题标题】:Passing a rendered JSP fragment as an argument to another JSP将呈现的 JSP 片段作为参数传递给另一个 JSP
【发布时间】:2016-09-11 22:41:00
【问题描述】:

我有一个如下所示的 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”的部分在每次出现之间发生变化。

这个片段includes 的每个实例都是一个不同的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 等)。这可能吗?或者我可以使用其他方法吗?

【问题讨论】:

    标签: java jsp


    【解决方案1】:

    好的,看起来这样做的方法是在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 片段将在标记中出现 &lt;jsp:doBody /&gt; 的位置呈现,例如

    <%@ attribute name="title" required="true" %>
    
    <div>
        <div>
            <!-- 1 -->
            <h1>${title}</h1> 
        </div>
        <div>
            <!-- 2 -->
            <jsp:doBody />
        </div>
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多