【问题标题】:Cannot use javascript variable as property in Grails不能在 Grails 中使用 javascript 变量作为属性
【发布时间】:2013-09-06 07:23:12
【问题描述】:

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

【问题讨论】:

  • 老兄,我不确定 grails,但在 jquery 部分你用双引号将 ${session.traineeDetais.name[" + value + "]} 括起来,这可能是导致问题,例如:如果你想在 jquery 中使用其他语言,比如 php,它会像 $("#billingPersonName").val();

标签: jquery grails gsp


【解决方案1】:

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

变量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]);
}

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

【讨论】:

  • 收到此错误:原因:org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException:执行标签时出错 :评估表达式时出错 [session.traineeDetais.name as grails.converters.JSON] 第 [7] 行:无法使用类 '[Ljava.lang.String;' 投射对象 '[Ljava.lang.String;@1c42b98'到类“grails.converters.JSON”由于:groovy.lang.GroovyRuntimeException:找不到匹配的构造函数:grails.converters.J SON(java.lang.String,java.lang.String)
  • 您应该在您的操作中创建该 JSON 数组并将其作为变量传递到您的模型中,而不是在您的视图中创建 dataFromServer JSON - 只是为了分离逻辑和布局......
  • 编辑您的 cmets 并将其替换为另一个问题是没有意义的...我不知道您在会话中保存的内容类型。我假设 session.traineeDetais.name 是一个数组。看起来它只是一个字符串而不是数组。首先检查你的变量。
  • 给定的代码只是一个例子。您必须弄清楚如何适应您的特定用例或提供更多详细信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
相关资源
最近更新 更多