0

我使用 netbeans 在脚本文件夹中创建了以下脚本。我无法保存域类。另外,如果我将整个项目部署为 war 文件,我可以使用 Windows 调度程序运行脚本吗?

脚本

def json = ""
def txt = new URL("http://free.worldweatheronline.com/feed/weather.ashx?q=Singapore,Singapore&format=xml&num_of_days=1&key=b674fb7e94131612112609").text
def records = new XmlSlurper().parseText(txt)
def weather = records.weather
def dates = weather.date
def min = weather.tempMinC
def max = weather.tempMaxC
def img = weather.weatherIconUrl
def desc = weather.weatherDesc
def descLink = desc.toString().replaceAll(" ","%20")
println max
Weathers w  = new Weathers()
w.cityName="singapore"
w.day = dates
w.description =desc
w.max = max
w.img = img
w.min = min
w.url = "jk"

领域类

package org.mPest

class Weathers {
    int id
    String day
    String min
    String max
    String img
    String description
    String cityName
    String url

static constraints = {
    id(blank:false, unique:true)
    cityName(blank:false)
    url(blank:false)

}

}

4

3 回答 3

0

您不能直接使用域类。

请参阅此常见问题解答以阅读如何使用以下领域的域类src/groovy

import org.codehaus.groovy.grails.commons.ApplicationHolder
//…
def book = ApplicationHolder.application.getClassForName("library.Book").findByTitle("Groovy in Action")

我不知道是否可以从 Windows 运行战争打包脚本,但您可以使用 grails Quartz 插件来安排您的任务......

于 2012-04-23T20:28:02.047 回答
0

看一下grails run-script命令。您应该能够使用它来使用诸如 windows 调度程序或 cron 之类的东西来执行脚本,但是您必须拥有完整的源代码(而不是 war 文件)供脚本执行。

于 2012-04-25T02:54:36.543 回答
0

在 Grails 2.x 中,您应该使用 Holders 而不是 ApplicationHolder。例如:

import grails.util.Holders
def validKeys = Holders.grailsApplication.getClassForName("com.vcd.Metadata").findAll { it.metadataKey }*.metadataKey
于 2014-02-27T00:43:12.857 回答