0

我想创建一个自定义 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>

哪个给出了这个错误

找不到文件“${src}”

意味着它试图包含 ${src} 的价值。有人可以建议如何从指定的属性值将文件包含在标记文件中吗?

注意:我正在使用 angularjs。我想在没有 ajax 调用的情况下加载 angularjs 模板。因为我的浏览器无法通过 AJAX 调用加载 ng-template 以解决跨域调用问题。

4

2 回答 2

0

WEB-INFdirectory 是一个特殊目录,它属于您的 Web (Servlet) 应用程序的公共目录树。

Servlet 规范声明(第70 页左右):

应用程序层次结构中存在一个名为“WEB-INF”的特殊目录。此目录包含与应用程序相关但不在应用程序文档根目录中的所有内容。WEB-INF 节点不是应用程序公共文档树的一部分。WEB-INF 目录中包含的任何文件都不能由容器直接提供给客户端。但是,WEB-INF 目录的内容对 servlet 代码使用getResourcegetResourceAsStream方法调用是可见的ServletContext,并且可以使用 RequestDispatcher 调用公开。

AngularJS 看不到您的 Web 应用程序 WEB-INF 文件夹中的任何文件夹,因为它没有“连接”到它。

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

于 2015-12-08T10:56:05.913 回答
0

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

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

这工作正常。

于 2015-12-08T10:56:31.530 回答