Как получить доступ к классам библиотеки Java в шаблоне Freemarker

Я использую библиотеку smooks для преобразования XML в XML. Ниже приведена конфигурация smooks. В шаблоне freemarker я хочу получить доступ к классам библиотеки jdk, а также к классам, которые я создал в проекте. Пожалуйста, дайте мне знать, как я могу этого добиться.

<?xml version="1.0"?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
                  xmlns:core="http://www.milyn.org/xsd/smooks/smooks-core-1.3.xsd"
                  xmlns:ftl="http://www.milyn.org/xsd/smooks/freemarker-1.1.xsd">

    <core:filterSettings type="SAX" defaultSerialization="false" />
    <resource-config selector="Order">
        <resource>org.milyn.delivery.DomModelCreator</resource>
    </resource-config>

    <ftl:freemarker applyOnElement="Order">
        <ftl:template>
    <!--
        <#assign x="${Order.OrderLines.OrderLine[0].@FulfillmentType}">
        <order requestNumber="${Order.@OrderNo}"
           customerEmail="${Order.@CustomerEMailID}"
           orderNumber="${Order.@CustomerPONo}"
           dateTimePlaced="${Order.@OrderDate}"
           shipNodeID="${Order.@ShipNode}"
           <#if x == "S2H" >
           deliveryType="SHIPTOHOME"
           </#if>
           >
        </order>-->
        </ftl:template>
    </ftl:freemarker>
</smooks-resource-list>

person Suman Shil    schedule 09.11.2015    source источник


Ответы (1)


Предполагается, что доступ к объектам и классам Java (для статических утилит) предоставляется вызывающей стороной через модель данных (контекст шаблона). Хотя я полагаю, что Смукс этого не сделает. Но если вам разрешено настраивать FreeMarker под Smooks, то вы можете добавить в конфигурацию FreeMarker так называемые «общие переменные», которые будут доступны для всех шаблонов, не добавляя их в модель данных (см. freemarker.template.Configuration.setSharedVariable()). В крайнем случае, вы можете использовать что-то вроде 'com.example.MyObjectProvider'?new() для контрабанды ваших Java-объектов, где MyObjectProvider реализует TemplateMethodModelEx (или любой другой TemplateModel интерфейс).

person ddekany    schedule 11.11.2015