将JSP嵌套在自定义JSP标记范围内

时间:2014-10-08 00:59:33

标签: java jsp taglib

我为JSP页面创建了一个方便的标记库。它看起来像这样:

<myTag:getContent>

    <div id="metadata">
        <myTag:printContent arg="meta"/>
    </div>
    <div id="data">
        <myTag:printContent arg="data"/>
    </div>

</myTag>

getContent包含一个RESTful Web服务,它初始化并设置一些变量,这样当我使用printContent及其各自的参数时,它只需打印变量而不是重新获取内容。

问题在于,在实际应用中,对打印内容的调用深入到不同的页面剪辑中:

<myTag:getContent>

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

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

</myTag>

我在每个页面的顶部定义了myTag库,但我得到了:

java.lang.NullPointerException

在&#34; myTag:printContent&#34;的内部JSP中

我该怎么办?考虑到真正的内部jsp页面还有其他标记库和逻辑,这是否可能?

getContent是.tld(标记库描述符)

中的以下属性
<body-content>JSP</body-content>

1 个答案:

答案 0 :(得分:0)

好吧,看起来好老一步,看起来问题在这里是真的。我切换了jsp:includes到指令包含。对于那些不熟悉的人:

<myTag:getContent>
    <%@include file=".../.../.../this.jsp"%> 
    <@%include file=".../.../.../that.jsp"%> 
</myTag>

这是有效的,因为现在范围是相关的,因为此处的包含在翻译时是静态的,而jsp:include在请求时是动态的。

相关问题