我有一个 PlanAction 控制器和志愿者控制器。PlanAction有很多志愿者,志愿者属于planAction。我想根据用户勾选的代表单独 planAction 的复选框创建一个志愿者。
我尝试了 remoteFunction 但无法让它工作,因为在 remoteFunction 上并没有真正调用 toggleBusCheck 方法。
planAction create gsp 具有以下语法,用于使用 id 和 params 调用远程函数来创建志愿者
<g:each in="${familyValueInstance?.planAction}" status="p" var="action">
<p>
<g:checkBox name='volunteer' value="${action.id}" checked="" onchange="${remoteFunction(controller:'volunteer', action:'toggleBusCheck', id:action.id)}" /> ${action.actionsup}</p>
</g:each>
志愿者控制器中的方法
def toggleBusCheck = {
volunteerInstance = new Volunteer(params)
volunteerInstance.userAccount = UserAccount.get(session.selectedUser.id)
volunteerInstance.planAction = params.planAction
if (!volunteerInstance.hasErrors() && volunteerInstance.save(flush:true)) {
flash.message = "familyValue.created"
flash.defaultMessage = "Volunteer Created"
redirect(action: "planList")
}
redirect(action: "planList")
}
这是我在尝试检查是否调用了 toggleBusCheck 方法时遇到的错误
java.lang.IllegalArgumentException: Cannot invoke whanauora.values.Volunteer.setPlanAction on bean class 'class whanauora.values.Volunteer' - java.lang.ClassCastException@4c1232f6 - had objects of type "java.lang.String" but expected signature "whanauora.values.PlanAction"