0

奇妙に十分に文書化されていない(文書化されていたとしても)、すでに知られている古いトピックに遭遇しました。Grails 2.4.4 で 1 対多の関係を持つフォーム用の動的テーブルを作成しようとしましたが、そのためには 2.1 のチュートリアルに基づいて作成する必要がありました。

私はwritetable jQuery プラグインを使用して、フォーム用の見栄えの良いレスポンシブ HTML を開発するのに役立てています。1 行を削除すると、期待どおりに動作し、次の HTML の抜粋が生成されます。

例 1 :行 1 (ゼロベース) を削除しようとする (行 1 の削除ボタンを押す)

<input type='hidden' name='faixas[1].deleted' value='true'/>

クラスを考えると:

package mobvida

class Questionario {
    String titulo
    int score = 0
    List faixas
    List questoes

    static belongsTo = [usuario:Usuario]
    static hasMany = [ questoes : Questao,
                       faixas : Faixa ]

    static constraints = {
    }

    static mapping = {
        faixas cascade: "all-delete-orphan"
    }
}

class Faixa {
    int limiteInf
    int limiteSup
    String nome

    boolean deleted

    static transients = [ 'deleted' ]
    static belongsTo = [questionario: Questionario]
    static constraints = {
    }

    def String toString() {
        return "${nome} (${limiteInf} - ${limiteSup})"
    }
}

QuestionarioController.groovyファイルには、コントローラークラスの下に次のものがあります。

@Transactional
def update(Questionario questionarioInstance) {
    if (questionarioInstance == null) {
        notFound()
        return
    }

    questionarioInstance.faixas.removeAll{(it.deleted || (it == null))}
    // questionarioInstance.questoes.removeAll{(it.deleted || (it == null))}

    log.info "${questionarioInstance}"

    for (it in questionarioInstance.faixas) {
        log.info "${it}(${it.id}) state: ${it.deleted}"
    }
    //...

html送信前にページに追加されていても、何も削除しません。メソッドのログの指示により、update()削除しようとしていた行が属性deletedを false として保持していることを確認できました。質問は...削除するためにここで何が欠けていますか?

4

1 に答える 1

1
static constraints = {        
        deleted bindable: true
    }
于 2015-03-11T06:37:10.367 に答える