0

私はgrailsを初めて使用し、この単純なクラスを備えたアプリを持っています。

class Person{
String name
}

class Voter{
String voteAddress
String counter
Person person
}

現在、Voterクラスのフィールドパーソンのみを更新しようとしています。今、私は以下のコードを持っています、そしてそれは機能していません、そして私はそれが間違っていることを知っています、しかし私はとにかくそれを試しました:

def updatePersonFieldOnly{
 def voterInstance = Voter.get(params.id)
 voterInstance.properties=params

 def personInstance = Voter.findById(12)

 voterInstance.person = personInstance

 ......some other code to update
 .....
}

ここで、アクションを実行すると、次のエラーが発生しました。

タイプjava.lang.Stringのプロパティ値をプロパティpersonに必要なタイプproj.Personに変換できませんでした。ネストされた例外はjava.lang.IllegalStateExceptionです:タイプ[java.lang.String]の値をプロパティpersonに必要なタイプ[proj.Person]に変換できません:一致するエディターまたは変換戦略が見つかりません

私はまだgrailsのドキュメントを読んでいる途中です。だから誰かがこれについて私を助けることができますか?ありがとう。

4

1 に答える 1

0

Grailsが「Person」オブジェクトに変換しようとしているパラメータマップに「person」というプロパティがあるようです。そのフィールドを「person.id」に変更してみてください。GrailsはそのIDに対応するPersonオブジェクトを自動的にフェッチし、「person」オブジェクトと照合する必要があります。

詳細については、「データバインディングとシングルエンドアソシエーション」のセクションのDataBindingを参照してください。

于 2012-11-15T06:39:53.157 に答える