如何在Freemarker模板中访问java库类

如何在Freemarker模板中访问java库类,java,freemarker,template-engine,smooks,Java,Freemarker,Template Engine,Smooks,我正在使用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/smoo

我正在使用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>

org.milyn.delivery.DomModelCreator

调用方应该通过数据模型(模板上下文)提供对Java对象和类(用于静态实用程序)的访问。我想斯摩克斯不会这么做的。但是,如果允许您在Smooks下配置FreeMarker,那么您可以将所谓的“共享变量”添加到FreeMarker配置中,该配置将适用于所有模板,而无需将它们添加到数据模型中(请参见
FreeMarker.template.configuration.setSharedVariable()
)。最后,您可以使用类似于
'com.example.MyObjectProvider'?new()
的方法将Java对象偷偷带入,
MyObjectProvider
实现
TemplateMethodModelEx
(或任何其他
TemplateModel
接口)