java - 如何从 JSP 访问 JavaScript 中的 Java 对象

标签 java javascript jsp

<分区>

我在 JSP 中有一个下拉框,列出了一个 Java 对象(通过 MVC Controller 的 addAttribute 访问该对象)。现在,在从下拉框中选择一个选项时,我想在一个 div 中显示所选员工的其他详细信息(示例 - ${employee.employeeCV}、${employee.employeeName})。我有一个 JavaScript 函数(displayCV())。但我不确定该怎么做。

JSP-

<c:forEach items="${employees}" var="employee">
  <option value="${employee.id}" onclick="displayCV();">
    ${employee.employeeName}
  </option>
</c:forEach>

<b>CV:</b>

JavaScript

function displayCV() {
    var valueSelected = $('#employeeList').val();
    var div = $('#candidateDiv');
}

我该怎么做?

最佳答案

您不能直接从 JavaScript 访问 Java 类。您必须在 JavaScript(客户端)和 Java(服务器)之间使用某种网络服务通信。您可以使用 onchange 事件,该事件将向服务器发送请求以返回您可以解析的 XML/JSON 以获取数据(我看到您正在使用 jQuery,并且它已经具有 parseJSON 方法)并更新相应的节点在 DOM 中。

不过,另一种对多用户不友好(因为它无法检测更新)的更简单方法是将 Java 对象“转换”为 JavaScript 并使用该对象更新数据(仍然使用 onchange)。像这样的东西:

// This is JavaScript code written in the JSP
var employees = {
  <c:forEach items="${employees}" var="employee">
  "${employee.id}": {
    name:"${employee.employeeName}",
    cv:"${employee.employeeCV}",
  },
  </c:forEach>
}

现在当 JSP 解析这个时,它会生成,例如:

var employees = {
  "1": {
    name:"foo",
    cv:"cv1",
  },
  "2": {
    name:"bar",
    cv:"cv2",
  },
}

关于java - 如何从 JSP 访问 JavaScript 中的 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6577246/

相关文章:

javascript - 通过 javascript 将 json 对象发送到 python Web 服务

javascript - Ember - 多对多关系数据未更新

java - 如果 tagdir 属性没有尾部斜杠,是否有任何 jsp 2.0 实现会强制出现错误?

mysql - jsp插入数据库没有utf-8

使用jks文件访问https服务的java程序

java - 查找 Galaxy Tab 10.1 的 IP 地址以供应用程序

java - Spring Security Active Directory LDAP 身份验证没有全名

java - 如何在我的 Android 应用程序中保存一组简单对象?

java - 反序列化从 JSP 页面获取的 Java 对象?

javascript - 当通过 innerHTML 添加内容时,发生不必要的滚动到元素