首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从moqui中的ArrayList导出数据的正确方法是什么?

从moqui中的ArrayList导出数据的正确方法是什么?
EN

Stack Overflow用户
提问于 2015-03-06 13:55:53
回答 1查看 132关注 0票数 1

我正在试图导出XML文件中的数据。我有几个实体,从其中检索ArrayList中所有必要的数据。我可以利用这个ArrayList并通过在script标记中嵌入script/ groovy代码来导出数据。但是我想知道在Moqui有什么其他的输出数据的方法吗?

我只知道writeXmlText方法,它可以用XML编写实体数据。

编辑:这是我的示例服务

代码语言:javascript
复制
<service verb="get" noun="ExportData" type="script" location="component://PracticeTutorial/service/ExportTutorialServices/getExportData.groovy">        
    <out-parameters>
        <parameter name="employees" type="List">
            <parameter name="employee" type="Map">
                <parameter name="empId"/>
                <parameter name="firstName"/>
                <parameter name="lastName"/>
                <parameter name="designation"/>
            </parameter>
        </parameter>
    </out-parameters>
</service>

示例Groovy脚本:

代码语言:javascript
复制
import org.moqui.entity.EntityList
import org.moqui.entity.EntityValue

employees = []

EntityList employeeList = ec.entity.makeFind("tutorial.Employee").list()

for(EntityValue ev : employeeList) {
    employees.add([empId:ev.empId, firstName:ev.firstName, 
                              lastName:ev.lastName, designation:ev.designation])
}

我这样打电话给服务部门:

代码语言:javascript
复制
<transition name="export">
    <actions>
        <service-call name="ExportTutorialServices.get#ExportData" in-map="context" out-map="context"/>
    </actions>
    <default-response url="."/>
</transition>

问题1:调用服务后如何从屏幕上访问employees ArrayList?

问题2:是否有更简单的方式从ArrayList employees导出数据?我想生产这样的产品。

预期输出:

代码语言:javascript
复制
<employees>
    <employee>
         <id>001</id>
         <firstName>John</firstName>
         <lastName>Doe</lastName>
         <designation>Developer</designation>
    </employee>
</employees>

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-26 19:47:37

简而言之,听起来您想要创建一个具有特定结构的XML文档,最终基于数据库中的数据。

在Java中可以使用各种工具来实现这一点,Groovy和XML是一个非常好的工具。将字符串附加到Writer或StringBuilder有时是一个很好的方法,因为输出格式非常简单(对于较小的文档,或者那些遵循特定模式的文档)。

对于更复杂的文档,例如,如果您提到的列表是几十个文档中的一个,或者元素嵌套在几个层次中,那么我建议使用一个FTL模板来生成XML,使用Moqui屏幕来调用您的数据准备服务,并使用屏幕.widgets.rend-mode元素来包含FTL模板。

使用以屏幕方式包装的FTL,您可以使用ScreenFacade.makeRender()方法来创建ScreenRender对象。在该对象上,设置根屏幕位置、"xml“的呈现模式以及其他所需的选项,然后调用render(Writer)方法或返回字符串的render()方法。使用这些方法,您可以将文本流到文件中,通过web请求或其他方式发送。

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

https://stackoverflow.com/questions/28900315

复制
相关文章

相似问题

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