freemarker를 뷰 템플릿으로 사용하여 Jsp 태그 라이브러리를 작성했습니다.Freemarker에서 중첩 된 JSP 태그에 액세스 할 수 없습니다.
custom.tld
은 META-INF/tags /에 있습니다.
내 태그 Lib은 Jar로 번들로 제공됩니다. customTag.jar
. 그것은 템플릿
AlertTag.ftl
ButtonTag.ftl
AlertTag.ftl
ButtonTag.ftl
에 따라 달라집니다.
AlertTag.ftl
: -
<#assign custom = JspTaglibs["http://www.abc.com/taglibs/custom"]>
<h5>${this.title}</h5>
<div class="alert ${this.typeClass} ${this.classes!}">
<@custom.button btnType="close" <span class="alt">close</span></@custom.button>
</div>
이 customTag.jar 다른 웹 응용 프로그램의 일부입니다.
web.xml
: - 웹 응용 프로그램에서 index.ftl
그것이
Expression JspTaglibs is undefined on line 1, column 17 in freemarker/AlertTag.ftl.
The problematic instruction:
----------
==> assignment: custom=JspTaglibs["http://www.abc.com/taglibs/custom"] [on line 1, column 1 in freemarker/AlertTag.ftl]
----------
Java backtrace for programmers:
----------
freemarker.core.InvalidReferenceException: Expression JspTaglibs is undefined on line 1, column 17 in freemarker/AlertTag.ftl.
내가 JSP로 중첩 된 태그를 사용할 수 없습니다 나는 다음과 같은 예외를 throw 태그 <@custom.Alert id="abc">
을 사용하려고 지금
<taglib>
<taglib-uri>http://www.abc.com/taglibs/custom</taglib-uri>
<taglib-location>/WEB-INF/custom.tld</taglib-location>
</taglib>
freemarker.
AlertTag.java
Configuration cfg = new Configuration();
cfg.setClassForTemplateLoading(this.getClass(), "/");
Template ftlTemplate = cfg.getTemplate(view);
JspWriter writer = pageContext.getOut();
data.put("id", id)
Map<String, Object> rootMap = new HashMap<String,Object>();
rootMap.put("this", data);
Environment environment = ftlTemplate.createProcessingEnvironment(rootMap, writer);
environment.process();
//ftlTemplate.process(rootMap, writer);
@Daniel
, 나는 위와 같이 환경을 사용하고 있지만, 어느 일을하지 않았다. 올바르게 사용하고 있습니까?
어떻게 'AlertTag.ftl'자체를 호출합니까? – ddekany
web-app의 index.ftl에서 호출하고 있습니다. <@ custom.Alert id = "abc">' – Mady
나는 plain @ FreeMarker 매크로/지시어와는 달리'@customer.Alert'는 사용자 정의 JSP 태그입니다. 그래서 제가 의미하는 것은 기술적으로 AlertTag.ftl을 호출하는 방법입니다. 왜냐하면 JSP 태그는'index.ftl'에 사용 된 것과 아무런 관계가없는 자체 FreeMarker 엔진 인스턴스를 생성 할 것이고 따라서 JSP taglib 지원이 전혀 존재하지 않을 것으로 생각됩니다. – ddekany