2015-03-31 2 views
0

У меня есть несколько #foreach #if комбинаций в шаблоне скорости после опушке шаблон я обращенную форматирование проблемы, как показано ниже:Velocity проблема шаблон форматирования

шаблона:

#if ($rq.allowanceType == "TAXI") 
#foreach($i in [1..50]) 
#set($test = "$rq.subType$i") 
#if($render.eval($ctx, "$rq.subType$i") != "" && $test != $render.eval($ctx, "$rq.subType$i"))  
    <aps:lineItem> 
    <aps:details> 
    <aps:type>$render.eval($ctx, "$rq.type$i")</aps:type> 
    <aps:billNumber>$render.eval($ctx, "$rq.billNumber$i")</aps:billNumber> 
    <aps:isReceived>$render.eval($ctx, "$rq.valid$i")</aps:isReceived> 
    #if($render.eval($ctx, "$rq.valid$i") == "YES") 
    <aps:FromDate>$render.eval($ctx, "$rq.FromDate$i")</aps:FromDate> 
    <aps:ToDate>$render.eval($ctx, "$rq.ToDate$i")</aps:ToDate>#end#if($render.eval($ctx, "$rq.Amount$i") != "")<aps:Amount>$render.eval($ctx, "$rq.Amount$i")</aps:Amount>#end#if($render.eval($ctx, "$rq.VatAmount$i") != "")<aps:VatAmount>$render.eval($ctx, "$rq.VatAmount$i")</aps:VatAmount> 
    #end   
    <aps:GrossAmount>$render.eval($ctx, "$rq.GrossAmount$i")</aps:GrossAmount> 
    </aps:details> 
    </aps:lineItem> 
#end 
#end 
#end 

Форматирование в

<aps:lineItem> 
    <aps:details> 
    <aps:type>FRAMES</aps:type> 
    <aps:billNumber>695</aps:billNumber> 
    <aps:isReceived>YES</aps:isReceived> 
    <aps:FromDate>01/02/1993</aps:FromDate> 
    <aps:ToDate>01/02/1994</aps:ToDate> <aps:GrossAmount>3000</aps:GrossAmount> 
    </aps:details> 
    </aps:lineItem> 
      <aps:lineItem> 
    <aps:details> 
    <aps:type>TEST</aps:type> 
    <aps:billNumber>695</aps:billNumber> 
    <aps:isReceived>NA</aps:isReceived> 
     <aps:GrossAmount>3000</aps:GrossAmount> 
    </aps:details> 
    </aps:lineItem> 

Что мы должны заботиться при добавлении условий и циклов в шаблоне скорости, чтобы он не создавал проблемы с форматированием?

ответ

1

К сожалению, скорость не позволяет легко сохранить форматирование вывода красивым и чистым, одновременно имея красивые шаблоны.

Легкое обходное решение не заботится о выходе скорости. В вашем случае, поскольку вы генерируете xml, применяйте xml-beautifier после того, как скорость создает файл, например. Вы можете использовать один из XMLBeans, который можно легко использовать программно:

import org.apache.xmlbeans.XmlObject; 
    import org.apache.xmlbeans.XmlOptions; 

    public static void beautify(File xmlFile) { 
     XmlOptions options = new XmlOptions(); 
     options.setLoadLineNumbers(); 
     XmlObject doc = XmlObject.Factory.parse(xmlFile, options); 
     options = new XmlOptions(); 
     options.setSavePrettyPrint(); 
     options.setSavePrettyPrintIndent(4); 
     doc.save(xmlFile, options); 
    } 
0

вы можете попробовать найти быстрые шаблоны, чтобы получить XML/JSON Capability Templating

предлагает лучшие возможности, чем Apache Velocity

IEngine templateEngine=EngineFactory.getInstance().getEngine(EngineType.TEMPLATES); 

templateEngine.initialize("/com/tester/template-rules-config.xml"); 

long startTime=System.currentTimeMillis(); 

EngineResponse response=templateEngine.execute(context); 

Quick-Templates Framework

Смежные вопросы