将 Groovy 脚本的结果获取到 GSP 中



>我有一个脚本,它接受一堆XML信息并以以下格式输出:

==================
Package: code: VCOM_NIGHTOWL
==================
==================
Quota Code Balance: code: NO_100G
==================
id: _aiZVYKGuEeqHJ4kr1alp8Q
initialAmount: 107374182400
amount: 107374182400
reservedAmount: 0
startDate: 2020-05-29T15:15:00.000+02:00
expirationDate: 2020-06-29T15:15:00.000+02:00
rolloverPeriodAmount: 1
rolloverPeriodUnits: Month
rolloverExpirationDate: 2020-07-29T15:15:00.000+02:00
rolloverTemplateName: NightOwl_Rollover
==================
Quota Code Balance: code: NightOwl_Rollover
==================
id: _aibxoKGuEeqHJ4kr1alp8Q
initialAmount: 107374182400
amount: 107374104877
reservedAmount: 0
startDate: 2020-05-29T15:15:00.000+02:00
expirationDate: 2020-06-29T15:15:00.000+02:00
==================
Package: code: VCOM_BBC_DATA_ABT
==================
==================
Quota Code Balance: code: DATA-100GB
==================
id: _6DakwKGxEeqHJ4kr1alp8Q
initialAmount: 107374182400
amount: 107374182400
reservedAmount: 125829120
startDate: 2020-05-29T15:40:00.000+02:00
expirationDate: 2020-06-29T15:40:00.000+02:00
rolloverPeriodAmount: 1
rolloverPeriodUnits: Month
rolloverExpirationDate: 2020-07-29T15:40:00.000+02:00
rolloverTemplateName: Rollover
==================
Quota Code Balance: code: Rollover
==================
id: _7m7EMIoeEeqfasqHpqlxMw
initialAmount: 11181322002
amount: 9394601779
reservedAmount: 0
startDate: 2020-04-29T15:40:00.000+02:00
expirationDate: 2020-05-29T15:40:00.000+02:00

我想在Grails GSP中渲染整个批次。

我试图弄清楚如何直接在控制器中运行脚本,但我似乎无法弄清楚。

这是脚本代码:

import groovy.json.*
import groovy.xml.*
import groovy.util.*
import java.time.*
import java.text.*
import groovy.transform.ToString 
def cps_post = new XmlSlurper().parse(new File("F:/SFTP Updates/Groovy/balance.xml"))
def cpsPost = cps_post.Body.GetSubscriberResponse.subscriber

def a = cpsPost.balance.code.size()
println a
def b = cpsPost.balance.quota.credit.size()
println b

def c = cpsPost.balance.quota.code.size()
println c
def d = cpsPost.balance.quota.size()
println c


for (int i = 0; i <= a; i++){

cpsPost.balance[i].code.each { codetag ->
println "=================="
println "Package: ${codetag.name()}: ${codetag.text()}"
println "=================="

cpsPost.balance[i].quota.code.each { quotatag ->
println "   =================="
println "   Quota Code Balance: ${quotatag.name()}: ${quotatag.text()}"
println "   =================="


cpsPost.balance[i].quota.credit.each { credit ->
credit.children().each { tag3 ->
println "       ${tag3.name()}: ${tag3.text()}"


}}
}}}
].execute().text

我还尝试使用"进程"cmd 运行脚本,然后渲染输出,即:

def cpsBilling(){
def process = "groovysh.bat F:/SFTP Updates/Groovy/cpsBilling.groovy".execute()
render "Output: " + process.text          
}

这只呈现"输出"字符串,而不呈现进程。

任何帮助将不胜感激,因为它正在驱使我香蕉。

谢谢

万一它对任何人都有用,我在 GSP 中使用了一个脚本。这可能不是理想的解决方案,但它适用于我需要的。

最新更新