2012-04-23 80 views
0

我使用netbeans在腳本文件夾中創建了以下腳本。我無法保存域類。另外,如果我將整個項目部署爲war文件,我可以使用Windows調度程序運行腳本嗎?Groovy腳本保存域類

腳本

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) 

} 

}

回答

0

你不能直接使用域類。

this FAQ閱讀如何使用域類從src/groovy

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

我不知道是否有可能從Windows運行腳本包裝的戰爭,但你可以使用Grails Quartz plugin安排您的任務...

0

看看grails run-script command。你應該可以使用它來使用諸如windows scheduler或cron之類的東西來執行腳本,但是你必須有完整的源代碼(不是war文件)才能供腳本執行。

0

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

import grails.util.Holders 
def validKeys = Holders.grailsApplication.getClassForName("com.vcd.Metadata").findAll { it.metadataKey }*.metadataKey