Мы пытаемся создать систему в freemarker, где дополнительные файлы могут быть дополнительно добавлены для замены блоков стандартного шаблона.
Мы добрались до этой точки
<#attempt>
<#include "extension.ftl">
<#recover>
Standard output
</#attempt>
Таким образом - если extension.ftl файл существует, он будет использоваться иначе, часть в восстановить блоке производится.
Проблема с этим состоит в том, что freemarker всегда регистрирует ошибку, которая заставила восстановить блок инициировать.
Таким образом, нам нужна одна из двух вещей:
- ИЛИ -
Попробуйте это, чтобы получить базовый путь:
<#assign objectConstructor = "freemarker.template.utility.ObjectConstructor"?new()>
<#assign file = objectConstructor("java.io.File","")>
<#assign path = file.getAbsolutePath()>
<script type="text/javascript">
alert("${path?string}");
</script>
Затем это, чтобы пройти по структуре каталогов:
<#assign objectConstructor = "freemarker.template.utility.ObjectConstructor"?new()>
<#assign file = objectConstructor("java.io.File","target/test.ftl")>
<#assign exist = file.exists()>
<script type="text/javascript">
alert("${exist?string}");
</script>