2011-08-18 103 views
0

我正在使用spring框架。我将java bean对象作为模型属性传递给JSP。在JSP上,我调用了一个传递这个java bean对象的javascript函数。我需要在javascript内部访问这个对象的成员。下面是代码片段在javascript中访问java对象

Test.jsp 
.. 
.. 
<form:radiobutton id="showdialog" path="nextAction" value="showdialog" label="show dialog" 
    onclick="javascript: showDiseaseGroupDialog('${dataRequestFormDTO}');"/></span></div> 
.. 
.. 

Common.js 
function showDiseaseGroupDialog(dataRequestFormDTO){ 

    alert("DG:"+dataRequestFormDTO.selectedDiseaseGroup); 
    for(var diseaseGroupDTO in dataRequestFormDTO.availableDiseaseGroups.values){ 
     alert(diseaseGroupDTO.name); 
    } 
} 

DataRequestFormDTO.java 
public class DataRequestFormDTO{ 
    private String selectedDiseaseGroup; 
    private Map<String, DiseaseGroupDTO> availableDiseaseGroups; 

    public String getSelectedDiseaseGroup() { 
     return selectedDiseaseGroups; 
    } 

    public void setSelectedDiseaseGroup(String selectedDiseaseGroup) { 
     this.selectedDiseaseGroup = selectedDiseaseGroup; 
    } 

    public Map<String, DiseaseGroupDTO> getAvailableDiseaseGroups() { 
     return availableDiseaseGroups; 
    } 

    public void setAvailableDiseaseGroups(
      Map<String, DiseaseGroupDTO> availableDiseaseGroups) { 
     this.availableDiseaseGroups = availableDiseaseGroups; 
    } 
} 

public class DiseaseGroupDTO { 

    private String id; 
    private String name; 

    public String getId() { 
     return id; 
    } 
    public void setId(String id) { 
     this.id = id; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 

} 

问题是我在showDiseaseGroupDialog函数中出错。第一个提示显示“DG:未定义”,javascript错误“availableDiseaseGroups未定义”。

我想了解

  1. 为什么的java bean成员不是在JavaScript访问?虽然在jsp中我可以打印相同的值。

  2. hashmap/arraylist如何在JavaScript中访问?

+0

java!= javascript。我认为你需要重新评估你的假设。 – amal

回答

1

Javascript名字很差,它与Java无关。你不能直接在javascript中使用java对象,就像你不能在其中使用C++对象一样。

1

您不能直接将java对象传递给javascript,因为java对象只对Java虚拟机有意义,而javascript只能被浏览器中的JS引擎解释。但是您可以将java bean转换为JSON格式或其他纯文本格式。