如何从JSP访问javascript中的java对象?

时间:2011-07-05 01:22:24

标签: java javascript jsp

我在JSP中有一个下拉框,列出了java对象(通过MVC控制器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');

}

有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:14)

您不能直接从JavaScript访问Java类,您必须在JavaScript(客户端)和Java(服务器)之间使用某种Web服务通信,您可以使用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",
  },
}

答案 1 :(得分:3)

LeleDumbo已经说过here的内容。

首先,您必须了解JSP是服务器端视图技术,而JavaScript通常在客户端(浏览器)上运行。

现在,您如何解决手头的问题。因此,您可以从JavaScript中发出AJAX请求,这将以JSON / XML格式获取数据。然后,您可以使用JavaScript在浏览器中显示该数据。

进一步阅读:

答案 2 :(得分:1)

在选项的 onchange 事件上调用该函数,而不是oprions的 onclick 。并使用

document.getElementById('GrdDamagedstock_tplRowEdit_ctl00_cmbFromBin').options[ele.options.selectedIndex].innerHTML;

获取选定的值。