在我的控制器类中,我为请求设置了一些属性,如下所示。
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}}的内容。如何在循环中访问请求变量?
jQuery(function(){
var dependent_data = [];
for(j=1;j<16;j++){
var depMM = "dependent_"+j+"_birthdateMM";
var depDD = "dependent_"+j+"_birthdateDD";
var depYY = "dependent_"+j+"_birthdateYYYY";
if (typeof '${depMM}' !== 'undefined' && '${depMM}' !=="") {
dependent_data.push('${depMM}','${depDD}','${depYYYY}');
}
}PS:当我这样做的时候,它打印了数据。
var dependent1MM_data = '${dependent_1_birthdateMM}';
alert(dependent1MM_data);发布于 2017-06-06 02:51:23
你不能像这样访问变量。您正在混合使用JavaScript和JSP。加载页面后,for循环将在客户端运行。您不能访问JavaScript中的变量。相反,您可以将其转换为jsp for循环并访问其中的变量。
下面是一些方法: 1.创建一个for循环(JSP for loop或JSTL ),然后访问请求参数并创建一个输入隐藏标记,在JS中访问。(或者) 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。但我确实在模板语言方面有一些经验。所以我只是在这里指出错误
https://stackoverflow.com/questions/44374432
复制相似问题