2017-06-05 42 views
0


在我的控制器类中,我正在为请求设置一些属性,如下所示。访问javascript中的动态请求变量

for(ConsumerVO dep:quoteVO.getConsumerFamily().getDependents()) 
      { 
       request.setAttribute("dependent_"+depCount+"_birthdateMM", dep.getBirthdateMM()); 
       request.setAttribute("dependent_"+depCount+"_birthdateDD", dep.getBirthdateDD()); 
       request.setAttribute("dependent_"+depCount+"_birthdateYYYY", dep.getBirthdateYYYY()); 
       depCount++; 
      } 

在JSP中,我试图通过动态地设置变量名称来访问它。但它没有工作。没有数据在$ {depMM},$ {depDD}等。我正在寻找类似$ {$ {depMM}}的东西。我如何访问循环中的请求变量? PS:当我这样做时,它打印了数据。

var dependent1MM_data = '${dependent_1_birthdateMM}'; 
alert(dependent1MM_data); 
+0

你能告诉你如何在JSP中设置变量吗? – karthick

+0

这个变量不是直接用在jsp中的。它传递给另一个jquery函数,它将根据这些数据显示/创建一些div。 – jijo

回答

1

您不能访问这样的变量。你在混合使用JavaScript和JSP。一旦页面加载,for循环将在客户端运行。你不能访问JavaScript内部的变量。你可以把它变成一个jsp for循环并访问那个变量。

这里有这样做的某些方面 1.(用于环路或JSTL每个JSP)创建一个for循环,然后访问请求参数和创建一个输入隐藏标签,访问,在JS。 (OR) 2.您可以在JSP中编写JSON字符串并在JavaScript中访问该字符串。

var myObject = <%= JSON output of dependedents %>; 

为什么下面的语句成功运作的原因是

var dependent1MM_data = '${dependent_1_birthdateMM}'; 
alert(dependent1MM_data); 

当JSP模板被渲染的模板引擎这个变量设置值。它不与JS引擎绑定到JSP呈现引擎。

我建议创建一个JSON字符串,因为如果数据太大,您将创建更多变量和input.hidden元素。所以编写JSON将是一个很好的解决方案

注意:我不擅长JSP或Spring。但我在模板语言方面有一些经验。所以我只是指出了这里的错误