Итак, вот интересное. У меня есть приложение Grails 2.1.1 с прямыми доменами и контроллером с скаффолдингом по умолчанию. Мой метод show()
работает, просто находит и извлекает объект домена с помощью def quarterEndAdjustmentInstance = QuarterEndAdjustment.get(params.id)
Однако, когда я вызываю метод edit()
, я получаю java.lang.IllegalArgumentException - argument type mismatch
при точно таком же вызове def quarterEndAdjustmentInstance = QuarterEndAdjustment.findByID(params.id)
Я подтвердил, что карта параметров передается в идентификаторе, и я пробовал все варианты get(id)
, get(params)
, findByID(id)
, findByID(params)
yadayadayada
Вот форма отправки в show.gsp, которая вызывает метод редактирования в контроллере:
<g:form>
<fieldset class="buttons">
<g:hiddenField name="id" value="${quarterEndAdjustmentInstance.id}" />
<g:link class="edit" action="edit" id="${quarterEndAdjustmentInstance.id}"><g:message code="default.button.edit.label" default="Edit" /></g:link>
<%-- <g:actionSubmit class="edit" action="edit" value="${message(code: 'default.button.edit.label', default: 'Edit')}" /> --%>
</fieldset>
</g:form>
Вот два замыкания из моего контроллера. show()
работает нормально, edit()
выдает исключение.
def show()
{
//params.each() { key, value -> println "${key} = ${value}" };
def quarterEndAdjustmentInstance = QuarterEndAdjustment.get(params.id) //here are your inbound params
if(!quarterEndAdjustmentInstance)
{
flash.message = "Quarter End Metric record not found with ${params}"
redirect(action:"list", params: params)
}
else
{
quarterEndAdjustmentInstance.setFrName(mriUtils.getCompRecipient(quarterEndAdjustmentInstance.getCompPayeeID()))
return [quarterEndAdjustmentInstance: quarterEndAdjustmentInstance]
}
}
def edit()
{
def quarterEndAdjustmentInstance = QuarterEndAdjustment.get(params.id)
if(!quarterEndAdjustmentInstance)
{
flash.message = "Quarter End M12 Adjustment not found with ${params}"
redirect(action:"list", params:params)
}
else
{
quarterEndAdjustmentInstance.setFrName(mriUtils.getCompRecipient(quarterEndAdjustmentInstance.getCompPayeeID()))
return [quarterEndAdjustmentInstance: quarterEndAdjustmentInstance]
}
}