Jquery 无法将javascript变量用作Grails中的属性

Jquery 无法将javascript变量用作Grails中的属性,jquery,grails,gsp,Jquery,Grails,Gsp,这是一个javascript/jQuery函数。这里我从javascript访问grails会话变量 function changeContactPersonDetails(value){ alert(value) //alert(typeof(value)) $("#billingPersonName").val("${session.traineeDetais.name[" + value + "]}"); } 这里我想使用变量“value”的值作为索引。但这会

这是一个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)

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

变量
value
是(客户端)jquery函数的参数

以下代码
${session.traineeDetais.name[“+value+”]}
由grails(服务器端)执行,其中变量
value
未知

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

使用
JSON
传递如下数据:

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

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

一种更简洁的方法是在控制器内计算/转换数组并将其传递给视图…

dude,我不确定grails,但在jquery部分,您用双引号括住了${session.traineeDetais.name[“+value+”]},这可能是导致问题的原因,例如:如果您想在jquery中使用其他语言,如php,它将类似于$(“#billingPersonName”).val();获取此错误:由以下原因引起:org.codehaus.groovy.grails.web.taglib.exceptions.grailstageexception:在第[7]行执行标记时出错:计算表达式[session.traineeDetais.name as grails.converters.JSON]:无法使用类强制转换对象“[Ljava.lang.String;”@1c42b98”[Ljava.lang.String;'to类'grails.converters.JSON',原因是:groovy.lang.GroovyRuntimeException:找不到与:grails.converters.J SON(java.lang.String,java.lang.String)匹配的构造函数与其在视图中创建dataFromServer JSON,不如在动作中创建JSON数组,并将其作为模型中的变量传递-只是为了分离逻辑和布局…编辑注释并替换为另一个问题是没有意义的…我不知道您在会话中保存的内容类型n、 我假设
session.traineeDetais.name
是一个数组。它看起来只是一个字符串而不是数组。首先检查变量。给定的代码只是一个示例。您必须找出如何适应您的特定用例或提供更多细节。