首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >速度模板格式化问题

速度模板格式化问题
EN

Stack Overflow用户
提问于 2015-03-31 10:03:59
回答 2查看 709关注 0票数 0

我在我的速度模板中有几个#foreach #if组合,在标记模板之后,我将面临如下的格式化问题:

模板:

代码语言:javascript
复制
#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

格式化为

代码语言:javascript
复制
    <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>

在速度模板中添加条件和循环时,我们应该注意什么,这样才不会产生格式化问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-31 12:26:20

不幸的是,速度不容易保持良好和干净的输出格式,同时拥有好看的模板。

一个简单的解决办法是不关心速度的输出。在您的示例中,由于要生成xml,所以在速度创建文件之后应用xmlbeans,例如,您可以使用xmlbean中的一个,它可以很容易地以编程方式使用:

代码语言:javascript
复制
   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);
   }
票数 1
EN

Stack Overflow用户

发布于 2016-04-13 13:48:06

您可以尝试快速模板来获得XML/JSON模板功能

提供比apache速度更好的功能。

代码语言:javascript
复制
IEngine templateEngine=EngineFactory.getInstance().getEngine(EngineType.TEMPLATES);

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

long startTime=System.currentTimeMillis();

EngineResponse response=templateEngine.execute(context);

快速模板框架

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29365899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档