У меня есть создание внутри таблицы / списка, которое предоставляет Grails.
Вот фотки того, что у меня
http://i56.tinypic.com/25jwmdf.jpg
Как видите, я создаю все в первой строке таблицы, а затем во 2-й строке и далее - фактический список.
В последнем столбце 2-й строки видно, что у меня есть кнопка ОБНОВЛЕНИЕ и кнопка удаления.
Кнопка удаления работает нормально, но у меня проблемы с кнопкой UPDATE.
Вот код этого последнего столбца
<g:form>
<g:hiddenField name="id" value="${densityInstance?.id}" />
<g:actionSubmit class="editar" action="update" value="${message(code: 'default.button.editar.label', default: ' ')}" />
<g:actionSubmit class="eliminar" action="delete" value="${message(code: 'default.button.eliminar.label', default: ' ')}" onclick="return confirm('${message(code: 'default.button.delete.confirm.message', default: 'Are you sure you want to delete?')}');" />
</g:form>
А вот что у меня есть для удаления и обновления в контроллере
def delete = {
def densityInstance = Density.get(params.id)
if (densityInstance) {
try {
densityInstance.delete(flush: true)
flash.message = "${message(code: 'default.deleted.message', args: [message(code: 'density.label', default: 'Density'), params.id])}"
redirect(action: "list")
}
catch (org.springframework.dao.DataIntegrityViolationException e) {
flash.message = "${message(code: 'default.not.deleted.message', args: [message(code: 'density.label', default: 'Density'), params.id])}"
redirect(action: "show", id: params.id)
}
}
else {
flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'density.label', default: 'Density'), params.id])}"
redirect(action: "list")
}
}
Кажется, что DELETE работает нормально, и вот ОБНОВЛЕНИЕ (может быть, это SAVEF def, который мне нужно отредактировать, я не уверен, и поэтому я спрашиваю.
Вот ОБНОВЛЕНИЕ:
def update = {
def densityInstance = Density.get(params.id)
if (densityInstance) {
if (params.version) {
def version = params.version.toLong()
if (densityInstance.version > version) {
densityInstance.errors.rejectValue("version", "default.optimistic.locking.failure", [message(code: 'density.label', default: 'Density')] as Object[], "Another user has updated this Density while you were editing")
render(view: "list", model: [densityInstance: densityInstance])
return
}
}
densityInstance.properties = params
if (!densityInstance.hasErrors() && densityInstance.save(flush: true)) {
flash.message = "${message(code: 'default.updated.message', args: [message(code: 'density.label', default: 'Density'), densityInstance.id])}"
redirect(action: "list", id: densityInstance.id)
}
else {
render(view: "list", model: [densityInstance: densityInstance])
}
}
else {
flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'density.label', default: 'Density'), params.id])}"
redirect(action: "list")
}
}
Заранее спасибо!