2016-04-12 21 views
0

こんにちは引数の型には適用されません:ませ署名が、私はこのサービスを持っている

def insertAction(int Id, String Name){ 
     def sql = new Sql(dataSource) 
     sql.execute("INSERT INTO mn (id, name) VALUES ($Id,$Name)") 
    } 

このコントローラ:

def save() { 
     println params 
     [contact: contactListService.insertAction(params.id,params.Name)] 
     redirect action: "create" 

と私は新しいエントリを作成するとき、私はこのエラーを取得

メソッドのシグネチャがありません:contactlist.ContactListService.insertAction()は引数型に適用されます。(null、java.lang.String)values:[null、das]可能な解決策:insertAction(int、java.lang.String)、リスtAction()

+0

変数名またはパラメータに大文字を使用しないでください –

答えて

0

まあ、エラーのように示唆しています。
最初のパラメータをintに設定しましたが、nullとします。
nullは任意のオブジェクトに対して取得できますが、intのようなプリミティブ型では取得できません。 メソッドのパラメータをInteger(またはdef)に変更し、メソッド内にnullをチェックするか、メソッドにその値を渡す前にparamsをチェックしてください。

+0

これはいくつかのものを変更しましたが、今ではこれを取得します。メソッドのNoシグネチャ:contactlist.ContactListService.insertAction()は、引数タイプに適用できます。(java.lang.String、可能な解決策:insertAction(int、java.lang.String)、listAction() – Andrew

+0

まあ、エラーが示唆しているのと同じです。 'int'と' String'を期待するようにメソッドを定義しましたが、2つの 'String'を指定します。 'params.id as int'を使ってメソッドに渡す前に、最初のパラメータをintに変換するか、メソッドのシグネチャを' String、String'または 'def、String'に変更してください。 – Vampire

+0

私は変更され、私が期待していたエラーを取得します。 IDは私のデータベースのbigintです。エラー:カラム "id"の型はbigintですが、式の型はcharacter varyingです。ヒント:式を書き換えたりキャストしたりする必要があります。 – Andrew

関連する問題