我正在试图导出XML文件中的数据。我有几个实体,从其中检索ArrayList中所有必要的数据。我可以利用这个ArrayList并通过在script标记中嵌入script/ groovy代码来导出数据。但是我想知道在Moqui有什么其他的输出数据的方法吗?
我只知道writeXmlText方法,它可以用XML编写实体数据。
编辑:这是我的示例服务
<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脚本:
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])
}我这样打电话给服务部门:
<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导出数据?我想生产这样的产品。
预期输出:
<employees>
<employee>
<id>001</id>
<firstName>John</firstName>
<lastName>Doe</lastName>
<designation>Developer</designation>
</employee>
</employees>谢谢
发布于 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请求或其他方式发送。
https://stackoverflow.com/questions/28900315
复制相似问题