0

ここに私の質問があります:-

class ReasonForCancellation {
    String reason
    Status status
    Date lastUpdated
    Date dateCreated

    static constraints = {
    reason(blank:false,maxSize:100,unique:true)
    dateCreated()
    lastUpdated()
    }

    enum Status{
        ACTIVE(true),
        INACTIVE(false)

        private boolean bool

        public Status(boolean bool){
            this.bool = bool
        }
    }

}

ビューページに1つのテキストボックスと1つのドロップダウンがあります。テキストボックスに値「FOO」を指定し、アクティブなオプションをクリックして保存すると、保存されます。編集オプションをクリックして非アクティブなオプションをクリックすると、これを行う必要があります。テキストボックスに同じ値「FOO」を入力して保存すると、同じ一意の値自体で更新されます。一意のアラートメッセージは表示されません。

4

1 に答える 1

0

新しいレコードを保存しようとしていると Grails が認識しているため、一意の制約が発生している可能性があります。更新を行う save メソッドは次のようになります。

def update = {
  def reasonForCancellation = ReasonForCancellation.get(params.id)
  reasonForCancellation.properties = params
  reasonForCancellation.save()
}

また、GSP の編集レコードの ID を隠しフィールドとして持つ必要があります。これはかなり標準的なものです。時間をかけてドキュメントをさらに読んだり、Grails に関する優れた本を手に取ったりすることをお勧めします。

于 2012-06-01T16:32:31.963 に答える