我有一个PlanAction控制器和志愿者控制器。 PlanAction有许多志愿者和志愿者属于planAction。 我想创建一个志愿者,取决于用户勾选代表单独的planAction的复选框。
我尝试了remoteFunction,但无法让它工作,因为在remoteFunction上并没有真正调用toggleBusCheck方法。
planAction create gsp具有以下syntex,用于调用具有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"