2014-05-12 2 views
2

우리는 하나의 드롭 다운 결과가 다른 드롭 다운과 관련이있는 몇 가지 관련 드롭 다운을 가지고 있습니다.JSTL/JSP에서 자바 스크립트 메소드로 자바 맵을 패스

맵의 형태로 선택할 때 무엇을 선택할지에 대한 매핑이 정의되어 있습니다.

Map<String,Map<String,String>> topics = new HashMap<String, Map<String,String>>(); 
     Map<String,String> ds = new HashMap<String, String>(); 
     ds.put("Array", "Array"); 
     ds.put("LL", "LL"); 
     topics.put("DS", ds); 
     Map<String,String> algo = new HashMap<String, String>(); 
     algo.put("BS", "BS"); 
     algo.put("Sorting", "Sorting"); 
     topics.put("Algorithm", algo); 

     Map<String,String> phil = new HashMap<String, String>(); 
     phil.put("phil1", "phil1"); 
     phil.put("phil2", "phil2"); 
     topics.put("Philosophy", phil); 

     Map<String,String> others = new HashMap<String, String>(); 
     others.put("others", "others"); 
     topics.put("Others", others); 

위의 그림에서와 같이 "DS"가 선택되면 "Ärray"및 "LL"을 표시하려고합니다. 다른 매핑의 경우도 마찬가지입니다.

이 맵을 JSP에 전달하고 JSTL을 사용하여 옵션을 렌더링합니다. 후속 드롭 다운을 채우기 위해 JS를 호출하기로 결정하면서이를 JSON으로 변경하려고합니다.

선택한 옵션의 특정 맵을 JS 메서드에 전달하고 후속 드롭 다운을 채우고 싶습니다.

JSON으로 변환하는 것이 유일한 방법입니까? 그렇다면 컨트롤러에서 전달하는 것은 어떻습니까? 컨트롤러에서 전달하지 않으면 JSP 자체에서보다 명확한 방법으로 무엇을 할 수 있습니까?

<div>Subject</div> 
     <select name="topic" onchange="callJavaScriptMethodWithMapOfSelectedComponent(mapOfSelectedValue)");"> 
      <c:forEach var="entry" items="${topics}"> 
        <option value="${entry.key}">${entry.key}</option> 
      </c:forEach> 
     </select> 
<select name="college"> 
        <option value="default">Select Subject</option> 
      </select> 

아래 첫 번째 드롭에서 선택한 값에 따라, 우리는 아래로 두 번째 드롭에 populatevalues ​​할 필요가 다음과 같이

JSP 블록이다.

JS 메소드는 첫 번째 드롭 다운에서 선택된 값의 맵을 취하여 두 번째 값을 채 웁니다.

function setOptions(chosen) { 
var selbox = document.myform.college; 

selbox.options.length = 0; 
if (chosen == " ") { 
    selbox.options[selbox.options.length] = new Option('Please select one of the options above first',' '); 

} 
    selbox.options[selbox.options.length] = new Option('//Choosen from the map passed','oneone'); 

} 

} 
+0

왜 키와 값이 같은 경우 해시 맵을 사용하고 있습니까? – NimChimpsky

+0

이것은 단지 예일뿐입니다. 예를 들어 이름과 함께 제목 코드를 사용할 수 있습니다. – instanceOfObject

+0

해결할 수 있었습니까? 동일한 구현이 필요합니다. – HKumar

답변

0

먼저 떨어져 나는 주제는 하나의 깊이 계층 구조이기 때문에>>, 즉 더 많은 의미를 줄지도 < 문자열, 목록 < 문자열이되도록 당신은 더 나은 변경 생각합니다.

다음까지 당신은 JSON으로지도를 변환하고 자바 스크립트 객체를 작성하거나 수동으로 맵 키를 횡단하고 객체에 추가 평가 사용하면, 그것은 모두 당신이 손에 가지고있는 도구에 따라 중 하나를 선택할 수 있습니다 지도를 JSON 서버 측 (JSONObject (주제); json.org에서 사용할 수 있음)로 직렬화 한 다음 json을 자바 스크립트의 변수로 평가하면됩니다.

+0

이미 해결했다면 구현 방법을 설명하십시오. – HKumar

관련 문제