自定义JSP标记,包含另一个JSP

时间:2015-12-08 10:43:25

标签: java angularjs jsp taglib angularjs-ng-template

我想创建一个自定义JSP标记,如下所示。

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

实际上包含文件&#34; ../ js / Rule / templates / rule-list.jsp&#34;在脚本标记内并生成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>

哪个给出了这个错误

  

文件&#34; $ {src}&#34;找不到

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

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

2 个答案:

答案 0 :(得分:0)

void imprimir( const ConjuntoPreguntas& cp ){ ConjuntoPreguntas::const_iterator it= cp.cbegin(); }; int main(){ ConjuntoPreguntas CP; ifstream fin("PreguntasConstitucion.txt"); fin >> CP; imprimir(CP); } class ConjuntoPreguntas{ private: map<int,Pregunta> preguntas; public: class const_iterator; / class iterator{ private: map<int,Pregunta>::const_iterator it; public: iterator & operator++(){ ++it; } iterator & operator--(){ --it; } pair<const int,Pregunta> &operator *(){ return *it; } bool operator ==(const iterator &i){ return i.it==it; } bool operator !=(const iterator &i){ return i.it!=it; } friend class ConjuntoPreguntas; friend class const_iterator; }; /** * @brief clase para iterar sobre la guia **/ class const_iterator{ private: map<int,Pregunta>::iterator it; public: const_iterator & operator++(){ ++it; } const_iterator & operator--(){ --it; } const pair<const int,Pregunta> &operator *(){ return *it; } bool operator ==(const const_iterator &i){ return i.it==it; } bool operator !=(const const_iterator &i){ return i.it!=it; } friend class ConjuntoPreguntas; }; /** * @brief Inicializa un iterator al comienzo de la guia * */ **iterator begin(){ iterator i; i.it=preguntas.begin(); return i; } const_iterator cbegin()const{ const_iterator i ; i.it = preguntas.begin(); return i ; } /** const_iterator cbegin(){ const_iterator i ; i.it = preguntas.begin(); return i ; } */ /** * @brief Inicializa un iterator al final de la guia * */ iterator end(){ iterator i; i.it=preguntas.end(); return i; } const_iterator cend()const{ const_iterator i; i.it= preguntas.end(); return i; } /* const_iterator cend(){ const_iterator i; i.it= preguntas.end(); return i; } */** }; 目录是一个特殊目录,是您的Web(Servlet)应用程序的公共目录树的一部分。

Servlet Specification州(第70页左右):

  

名为的应用程序层次结构中存在一个特殊目录   “WEB-INF”。该目录包含与之相关的所有内容   应用程序不在应用程序的文档根目录中。的的   WEB-INF节点不是公共文档树的一部分   应用程序。不能提供WEB-INF目录中包含的文件   由容器直接发送给客户端。但是,内容了   使用WEB-INF和,可以看到WEB-INF目录对servlet代码   getResource上的getResourceAsStream方法调用可能是ServletContext   使用RequestDispatcher调用公开。

AngularJS无法在您的Web应用程序WEB-INF文件夹中看到任何文件夹,因为它没有&#34;连接&#34;它。

您必须将这些模板文件添加到公共文件夹中,并通过Angular模板文件进行查看。

答案 1 :(得分:0)

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

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

这很好。