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"