从Javascript / JQuery动态访问Java模型列表

时间:2016-10-25 10:05:37

标签: javascript java jquery jsp

我的模型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)模型的电子邮件。

感谢您的帮助!

5 个答案:

答案 0 :(得分:1)

您面临的问题是服务器端代码与客户端代码之间的数据交换。有多种方法可以实现您的目标。你可以......

  1. 将list-elements存储在隐藏的表单字段中(转义分隔符可能是一个挑战)或
  2. 生成javascript - JSP中服务器端的代码,用于创建带有list-elements或
  3. 的javascript数组
  4. 使用ajax。
  5. 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}");