3

組み込みクラスにあるブール値の自動データ バインディングに問題があります。この例を作成しました:

ドメイン クラス:

class TestMe {

   TestEmbedded testEmbedded = new TestEmbedded()

   static embedded = ['testEmbedded']

   static constraints = {
   }
}

埋め込みクラス:

class TestEmbedded {

   String stringEmbedded = "test"
   Boolean booleanEmbedded = false
}

コントローラ:

class TestMeController {

    static scaffold = true
}

scaffolded edit と creat が入力を適切にレンダリングします。インスタントを作成または編集すると、埋め込まれたプロパティが正常に機能します。問題は 1 つだけです。TestMe.testEmbedded.booleanEmbedded を true 値から false 値に (チェックボックスを使用して) 編集しようとすると (他の方法では編集が機能します!)、データ バインディングが機能しません。Grailsのバグですか?良い回避策はありますか?

4

2 に答える 2

0

これは Grails のバグのように思われるため、Grails Issue を作成しました。

http://jira.grails.org/browse/GRAILS-9664

于 2012-12-12T14:00:41.750 に答える
0

コントローラーでパラメーターを出力して、false に設定したときにフィールドが実際に渡されていることを確認します。これをテストするには、コントローラーにダミーの update メソッドを作成する必要があります。

class TestController {

    static scaffold = true

    def update() {
        params.each {
            printing it
        }
    }
}

標準の HTML フォームは、チェックされていないチェックボックスを送信しません。Grails は、チェックボックス名の前にアンダースコアが付いた隠し変数 (常に送信されます) を作成し、使用している場合にこれを処理します。g:checkBox

フォームが を使用していない場合はg:checkBox、隠し変数を手動で作成するか、コントローラのロジックで処理できます。生成されたページのソースを表示すると役立つ場合があります。

うまくいけば、これが役に立ちます!

于 2012-10-31T04:35:07.473 に答える