包含另一个 JSP 的自定义 JSP 标签

Custom JSP Tag which include another JSP

我想按如下方式创建自定义 JSP 标签。

<ng:template src="../js/Rule/templates/rule-list.jsp" />

这实际上会将文件“../js/Rule/templates/rule-list.jsp”包含在脚本标记中并生成 HTML,如下所示。

<script type="text/ng-template" id="../js/Rule/templates/rule-list.jsp">
    Content of ../js/Rule/templates/rule-list.jsp file
</script>

到目前为止,我已经创建了以下标记文件。

<%@ attribute name="src" required="true" rtexprvalue="true" %>
<script type="text/ng-template" id="${src}">
    <%@ include file="${src}" %>
</script>

出现此错误的原因

File "${src}" not found

意味着它试图包含 ${src} 的值。谁能建议如何根据指定的属性值将文件包含在标记文件中?

注意:我正在使用angularjs。我想在不调用 ajax 的情况下加载 angularjs 模板。因为我的浏览器无法加载 ng-template AJAX call for cross domain call problem.

WEB-INF 目录是一个特殊目录,它 不是 网络(Servlet)应用程序的 public 目录树的一部分。

Servlet Specification 状态(第 70 页左右):

A special directory exists within the application hierarchy named “WEB-INF”. This directory contains all things related to the application that aren’t in the document root of the application. The WEB-INF node is not part of the public document tree of the application. No file contained in the WEB-INF directory may be served directly to a client by the container. However, the contents of the WEB-INF directory are visible to servlet code using the getResource and getResourceAsStream method calls on the ServletContext, and may be exposed using the RequestDispatcher calls.

AngularJS 无法在您的 Web 应用程序 WEB-INF 文件夹中看到任何文件夹,因为它没有 "connection"。

您必须将这些模板文件添加到 public 文件夹中,您的 Angular 模板文件可以查看这些文件。

知道了。我需要使用动态包含 as

<jsp:include page="${src}" />

这工作正常。