2012-02-22 9 views
0

サービス(以下のコード)を作成しようとしました。コントローラーから渡されたパラメーターのリストを取得し、パラメーターを反復して保存します。今、私はこのエラーを取得しておいてください。ここgrailsのparamsのリストから日付を保存するにはどうすればいいですか?

Error 500: Executing action [save] of controller [controller.EmploymentHistoryController] caused exception: Runtime error executing action 
Servlet: grails 
URI: /hrapp/grails/employmentHistory/save.dispatch 
Exception Message: No signature of method: static service.EmploymentHistoryService.saveEmploymentHistory() is applicable for argument types: (org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap) values: [[position:ksfdj, startDate:Wed Feb 22 00:00:00 PHT 2012, ...]] Possible solutions: saveEmploymentHistory(java.lang.Object) 
Caused by: No signature of method: static service.EmploymentHistoryService.saveEmploymentHistory() is applicable for argument types: (org.codehaus.groovy.grails.web.servlet.mvc.GrailsParameterMap) values: [[position:ksfdj, startDate:Wed Feb 22 00:00:00 PHT 2012, ...]] Possible solutions: saveEmploymentHistory(java.lang.Object) 

は私のコードです:

def saveEmploymentHistory(params){ 

    params.company = [params.company].flatten() 
    params.position = [params.position].flatten() 
    params.responsibilities = [params.responsibilities].flatten() 
    params.startDate = [params.startDate].flatten() 
    params.endDate = [params.endDate].flatten() 
    params.employee = [params.employee].flatten() 

    params.company.eachWithIndex{ company, i -> 
     def employmentHistory = new EmploymentHistory() 

     employmentHistory.employee = params.employee[i] 
     employmentHistory.company = company 
     employmentHistory.position = params.position[i] 
     employmentHistory.responsibilities = params.responsibility[i] 

     def tempStartDate = "${params.startDate_year[i]}/${params.startDate_month[i]}/${params.startDate_day[i]}" 
     employmentHistory.startDate = new Date(tempStartDate) 

     def tempEndDate = "${params.endDate_year[i]}/${params.endDate_month[i]}/${params.endDate_day[i]}" 
     employmentHistory.endDate = new Date(tempEndDate) 

     employmentHistory.save(flush:true) 
    } 



} 

私はエラーが日付ブツから来て賭けます。私はいくつかの解決策を試みたhereしかし、役に立たなかった。また、以下のコードをやってみましたが、それでも同じエラーを取得します...

employmentHistory.endDate = new Date(params.endDate[i]) 
employmentHistory.startDate = new Date(params.startDate[i]) 

私が試したもう一つが、それでも失敗:適切にこれを行う方法について

employmentHistory.endDate = params.endDate[i] 
    employmentHistory.startDate = params.startDate[i] 

任意の提案ですか?私はグルーヴィーにはあまり精通していません。 :( 任意の助けいただければ幸い。

+0

コントローラからこの「saveEmploymentHistory」をどのように呼び出すのですか? –

+0

これは私がそれを呼び出す方法です..EmploymentHistoryService.saveEmploymentHistory(params)上記のクラス名を追加するのを忘れました...しかしそれは問題ではありません。 –

+0

だから、あなたは 'static'と呼んでいますが、' static'ではありません。私の答えを見てください。 –

答えて

0

EmploymentHistoryService.saveEmploymentHistory()のような)あなたは、静的メソッドとして、このサービスのメソッドを呼び出すためにしようとしているようだが、実際にインスタンスメソッドが必要になります。これを行うには、あなたをClass Methods

を参照してください。

class EmploymentHistoryController { 

    def employmentHistoryService 

} 

、その後、としてそれを呼び出す:あなたのコントローラの頭の中で、(それはGrailsので自動的に配線されます)サービス分野を定義する必要があり

def save() { 

    employmentHistoryService.saveEmploymentHistory(params) 

} 

また、サービス方法をstaticとすることもできますが、実際にはサービスは必要ありません。どのクラスでもかまいません。

関連する問題