次の問題が発生しています。
def someAction() {
...
if (someCondition)
redirect action: 'index'
return
}
if (someOtherCondition)
redirect action: 'index'
return
}
...
redirect action: 'success'
}
これは完全に機能します。しかし、これをトランザクションにラップするとすぐに:
def someAction() {
MyDomainClass.withTransaction { status ->
if (someCondition)
status.setRollbackOnly()
redirect action: 'index'
return
}
if (someOtherCondition)
status.setRollbackOnly()
redirect action: 'index'
return
}
...
}
redirect action: 'success'
}
これにより、例外がスローされます。
ここでリダイレクト (..) を発行することはできません。応答は、別のリダイレクトによって、または応答に直接書き込むことによって、既にコミットされています。応答は、別のリダイレクトによって、または応答に直接書き込むことによって、既にコミットされています。
奇妙なことに、コードの別の部分でまったく同じことを行ったところ、完全に機能しました。唯一の違いは、リダイレクトではなく連鎖していることです。上記のコードで連鎖を試みましたが、それでも例外がスローされます。