我的模型List<Collaborateur>
来自我的Controller Action到我的JSP。我在JQuery / Javascript中有以下功能:
function showCollaborateurEmail(index) {
alert("${collaborateurs[1].email}"); // Works
alert("${collaborateurs[2].email}"); // Works
//....
alert("${collaborateurs[index].email}"); // Not working
}
所以我想通过调用函数Collaborateur
动态显示我的showCollaborateurEmail(index)
模型的电子邮件。
感谢您的帮助!
答案 0 :(得分:1)
您面临的问题是服务器端代码与客户端代码之间的数据交换。有多种方法可以实现您的目标。你可以......
1和2是相当临时的 - 解决一个小问题的解决方案。 3是一个更大的解决方案(取决于您的技术环境),它还可以避免页面重新加载。
答案 1 :(得分:0)
两种探索方法: 1)生成一个包含列表所有元素的javascript数组,并在客户端(javascript)随意访问 2)通过ajax请求访问“collaborateurs”
答案 2 :(得分:0)
我不建议通过jsp混合服务器和客户端代码。 相反,您应该创建一个servlet并使用ajax调用所需的内容。
如果您想使用脏/快速技巧,我认为您可以在<script>
标记内部将数组从服务器端构建回客户端
例如:
<script>
var emailArray = [
<%for (int i = 0; i > collaborateurs.length; i++){ %>
"<%=collaborateurs[i].email %>"
<%
if(i < collaborateurs.length - 1){
%>, <%
}
}%>
];
</script>
(我手写这个,所以我不确定语法是否正确,但我希望你有这个想法)
答案 3 :(得分:0)
您将拥有的另一个选项是将List对象转换为json,然后在编译阶段时将其设置为jsp中的变量,并在客户端上解析json并创建一个对象并对其进行迭代。这样,即使在加载页面后,您也可以访问列表。
您可以使用像gson,Jackson等API。
示例: -
List<Object> list1=new ArrayList<>();
// Add values to list here
JSONArray obj=new JSONArray(list1);
在JSP
:
var collaborateursList=${collaborateurs};
function showCollaborateurEmail(index) {
alert(collaborateursList[1].email);
alert(collaborateursList[2].email);
alert("collaborateursList[index].email);
}
答案 4 :(得分:-2)
请确认index
正确传递给该功能并尝试使用此
alert("${collaborateurs[" + index + "].email}");