2015-11-09 49 views
0

我正在使用smooks庫進行XML轉換。以下是smooks配置。在freemarker模板中,我想訪問jdk庫類以及我在項目中創建的類。請讓我知道我能做到這一點。如何訪問Freemarker模板中的java庫類

<?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][email protected]}"> 
     <order requestNumber="${[email protected]}" 
      customerEmail="${[email protected]}" 
      orderNumber="${[email protected]}" 
      dateTimePlaced="${[email protected]}" 
      shipNodeID="${[email protected]}" 
      <#if x == "S2H" > 
      deliveryType="SHIPTOHOME" 
      </#if> 
      > 
     </order>--> 
     </ftl:template> 
    </ftl:freemarker> 
</smooks-resource-list> 

回答

0

訪問Java對象和類(靜態公用事業)應該被調用者通過數據模型(模板上下文)提供。我想斯莫克不會這麼做。但是,如果允許您在Smooks下配置FreeMarker,則可以將所謂的「共享變量」添加到FreeMarker配置中,該配置將適用於所有模板,而不必將其添加到數據模型中(請參閱freemarker.template.Configuration.setSharedVariable())。作爲最後的手段,您可以使用類似'com.example.MyObjectProvider'?new()的東西走私您的Java對象,其中MyObjectProvider實施TemplateMethodModelEx(或任何其他TemplateModel接口)。