2011-08-18 98 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格式或其他純文本格式。