不能在Grails中使用javascript变量作为属性

时间:2013-09-03 06:47:29

标签: jquery grails gsp

这是一个javascript / jQuery函数。这里我从javascript访问grails会话变量

 function changeContactPersonDetails(value){
    alert(value)
    //alert(typeof(value))
    $("#billingPersonName").val("${session.traineeDetais.name[" + value + "]}");
 }

这里我想使用变量“value”的值作为索引。但它给出了错误

 Caused by: groovy.lang.MissingPropertyException: Exception evaluating property ' + value + ' for java.util.Arrays$ArrayList, Reason: groovy.lang.MissingPropertyException: No such property:  + value +  for class: java.lang.String
    at E__Workspace_opaltpm_grails_app_views_trainingOrder__billingDetailsTemplate_gsp$_run_closure1.doCall(E__Workspace_opaltpm_grails_app_views_trainingOrder__billingDetailsTemplate_gsp:15)

1 个答案:

答案 0 :(得分:3)

您正在混合服务器和客户端代码。

变量value是(clientside)jquery函数的参数。

以下代码${session.traineeDetais.name[" + value + "]}由grails(serverside)执行,其中变量value未知。

您必须将数组传递给您的客户端,您可以在jquery函数中访问它。

使用JSON传递如下数据:

var dataFromServer =  ${session.traineeDetais.name as grails.converters.JSON}

function changeContactPersonDetails(value){
    alert(value)
    $("#billingPersonName").val(dataFromServer[value]);
}

更清洁的方法是在控制器中计算/转换数组并将其传递给视图......