2013-09-13 1 views
0

Я пытаюсь использовать FreemarkerTag в JSP. Мне было интересно немного, потому что распределение не хватает файл TLD, но я создал один на моем собственном:Как настроить FreemarkerTag в JSP

<?xml version="1.0" encoding="UTF-8"?> 
<taglib> 
    <tlibversion>1.0</tlibversion> 
    <jspversion>1.1</jspversion> 
    <shortname>fmtag</shortname> 
    <info>Taglib for freemarker in JSP</info> 
    <uri>http://adesso.ch/jsp/fmtag</uri> 
    <tag> 
    <name>template</name> 
    <tagclass>freemarker.ext.jsp.FreemarkerTag</tagclass> 
    <bodycontent>tagdependent</bodycontent> 
    <info>Allows evaluation of FreeMarker templates inside JSP</info> 
    <attribute> 
     <name>caching</name> 
     <required>false</required> 
    </attribute> 
    </tag> 
</taglib> 

я могу использовать FreemarkerTag с этим и делать простые вещи (например, строки concats + петля). Я не могу использовать его, например, использовать директиву включить так:

<fm:template> 
    <#include "dummy_product_box_page_67623.ftl"> 
</fm:template> 

В этом случае шаблон включать не будут найдены. Я не знаю, как настроить мой основной шаблон более подробно. В частности, для директивы include я не нахожу способ настроить TemplatePath. Я нашел множество примеров, как это сделать программно с помощью setDirectoryForTemplateLoading() в объекте config, но у меня нет программного доступа в моем сценарии.

Любые подсказки и идеи будут высоко оценены. Благодарю.

ответ

1

Он использует Configuration.getDefaultConfiguration(), так что экземпляр конфигурации, который вы должны настроить на очень раннем этапе, желательно, прежде чем начнутся потоки обработки HTTP-запросов. Обратите внимание, однако, что Configuration.getDefaultConfiguration() устарел, потому что, если какой-то другой компонент, о котором вы даже не знаете, настраивает этот синглтон для себя тоже. Но так и должно быть, что этот плохой тег остался в данный момент ... (я предполагаю, что он должен получить Configuration из области запроса сервлета в качестве атрибута и, в противном случае, из контекста приложения.).

+0

Поскольку в нашем сценарии у нас нет контроллера, и мы почти не используем код Java, это не наше предпочтительное решение. Но окончательно ваш намек помог мне многое выяснить, как это работает. Благодарю. – mkraemerx