これは持続性とドメインオブジェクトの問題である可能性があります。だから私は人に追加できるマニュアルノートのリストを持っています。私のPersonクラスは、(私は永続性を無視する過渡状態でオブジェクトをラップしました)このようになります。ドメインオブジェクトの文字列リスト - オンザフライで追加する
class Person {
...
List<String> notes = new ArrayList<String>()
...
}
私はノートを持つ人を更新すると(ビュー上のテキストフィールドノートを追加することができるようになります)、私が欲しいです人に接続されたアレイのリストに新しいノートを追加するような単純な何かをする:
class PersonController {
...
def update() {
def contactInstance = Contact.get(params.id)
if (!contactInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'contact.label', default: 'Contact'), params.id])
redirect(action: "list")
return
}
if (params.version) {
def version = params.version.toLong()
if (contactInstance.version > version) {
contactInstance.errors.rejectValue("version", "default.optimistic.locking.failure",
[message(code: 'contact.label', default: 'Contact')] as Object[],
"Another user has updated this Contact while you were editing")
render(view: "edit", model: [contactInstance: contactInstance])
return
}
}
contactInstance.properties = params
/**
* Check for inactive - Then flag with user and date tag
*/
if(params.isActive == null) {
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm");
Date date = new Date();
contactInstance.properties.isActiveNote = "Made inactive by " + session.user + " on " + dateFormat.format(date) + "."
}
/**
* Date stamp of the note itself
*/
if(params.notes.equals("")) {}
else {
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm");
Date date = new Date();
//contactInstance.properties.notes = contactInstance.properties.notes + " " + params.notes + " - (" + dateFormat.format(date) + " " + session.user + ");"
contactInstance.allThese.add(contactInstance.properties.notes)
println(contactInstance.allThese)
}
if (!contactInstance.save(flush: true)) {
render(view: "edit", model: [contactInstance: contactInstance])
return
}
flash.message = message(code: 'default.updated.message', args: [message(code: 'contact.label', default: 'Contact'), contactInstance.id])
redirect(action: "show", id: contactInstance.id)
}
...
}
私のGSPからアップデートするコール:
<g:actionSubmit class="save" action="update" value="${message(code:'default.button.update.label', default: 'Update')}" />
しかし、ただの配列を格納しているようですシングルノート。 Grailsのドメインオブジェクトやコレクションに永続性の問題はありますか?それは私の目的のために非常によく問題になることができます!
ありがとうございました。
この例では、著者と書籍の1対多の関係を使用しています。http://www.2paths.com/2009/10/01/one-to-many-relationships-in-grails-forms/私は欲しい似たようなことをするが、明らかにブックオブジェクトではない。代わりに、String型のメモを使用したいと思います。 – user82302124