2012-07-03 2 views
0

Struts2 + Spring MVC + Hibernate를 사용하고 있으며 종속 드롭 다운 메뉴를 생성하려고합니다. 그러나 내 JQuery 함수는 페이지 시작시에만 호출되며 첫 번째 메뉴에서 옵션이 선택되지 않은 경우에는 호출되지 않습니다. 조직 드롭 다운 메뉴가 올바르게 작동합니다.sx : autocompleter onchange가 JQuery 함수를 호출하지 않습니다.

Search.jsp

<%@ taglib prefix="s" uri="/struts-tags" %> 
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%> 


<head> 
<script type="text/javascript" src="jquery-1.7.2.min.js"></script> 
<script type="text/javascript"> 
$(function loadFacilities(value){ 
    $("#facilitySelect").get(0).options.length = 0; 
    $("#facilitySelect").get(0).options[0] = new Option("Loading facilities", "-1"); 
    $.ajax({ 
     type: "POST", 
     url: "DependentFacility", 
     data: "{organizationID:" + value+ "}", 
     dataType: "json", 
     success: function(msg){ 
      $("#facilitySelect").get(0).options.length = 0; 
      $("#facilitySelect").get(0).options[0] = new Option("Select facility", "-1"); 

      $.each(msg.d, function(index, item){ 
      $("#facilitySelect").get(0).options[$("#facilitySelect").get(0).options.length] = new Options (item.Display, item.Value); 
      }); 
     }, 
     error: function(){ 
      $("#facilitySelect").get(0).options.length = 0; 
      alert("Failed to load facilities"); 
     } 

    }); 
}); 
</script> 
</head> 



<div class="element"> 
<p class="title"><s:property value="getText('global.a_search_screen')" /></p> 
<s:form name="ASearch" action="aSearchList" type="POST"> 
    <p class="content"> 
     <table class="topSearch"> 
     //Some Table stuff was here 

       <td > 
        <s:url id="organizationList" action="getListOfOrganizations" /> 
        <sx:autocompleter href="%{organizationList}" name="organizations" onchange="loadFacilities(this.value)" keyValue="0" value="---- SELECT ONE-----"/> 

       </td> 
       <td > 
        <select id="facilitySelect" name="selectedFacility" ></select> 
       </td> 

Struts.xml

<action name="DependentFacility" class="facilityActions"> 
    <result type="json"> 
    <param name="root">facility</param> 
    </result> 
    </action> 

FacilityActions.java

public class FacilityActions implements ModelDriven<FacilityVO> { 

FacilityService facilityService; 
private Map<String, String> facilities = new HashMap<String, String>(); 
FacilityVO facility = new FacilityVO(); 

public void setFacilityService(FacilityService facilityService) { 
    this.facilityService = facilityService; 
} 

public FacilityVO getModel(){ 
    return facility; 
} 

public String execute() { 
    return Action.SUCCESS; 
} 

public String addFacility(){ 
    try{ 
     facilityService.addFacility(facility); 
     return "SUCCESS";} 
    catch(Exception e){ 
     return "ERROR"; 
    }catch(Throwable t){ 
     return "ERROR"; 
    } 
} 

public Map<String, String> getFacilities() { 

    List<FacilityVO> facilityList = facilityService.listFacilities(); 

    Iterator<FacilityVO> iterator = facilityList.iterator(); 
    while (iterator.hasNext()) { 
     FacilityVO fac = iterator.next(); 
     facilities.put(fac.getFacilityName(), Integer.toString(fac.getFacilityId())); 
    } 

    return facilities; 
} 

public FacilityVO getFacility(Object thing){ 
    System.out.println("got a thing:" + thing.toString()); 
    return facility; 
} 

public FacilityVO getFacility(){ 
    System.out.println("Getting facility but nothing given?"); 
    return facility; 
} 
} 
다음은 관련 코드는

답변

1

Ajax and JavaScript recipes show으로 설정할 적절한 속성은 loadOnTextChange입니다.

단순 HTML 컨트롤이 아닌 Dojo 위젯임을 기억하십시오. – 표준 HTML 속성을 사용하여 동작을 수정할 수있는 것은 아닙니다.

JSON을 사용하는 경우 recipe for JSON results; 그것은 당신이 만드는 것보다 훨씬 더 간단 할 수 있습니다.

+0

loadOnTextChange가 작동하지 않습니다 ... 나는 단지 다시 호출되는지 확인하기 위해 작업에 System.out.println을 사용하고 있지만 시작시에만 호출됩니다. 도움을 주신 링크와 이전에 나온 링크가 있지만 Spring MVC로 작업하는 데 어려움을 겪었습니다. – user1287523

+0

@ user1287523 스프링 MVC는 이것과 어떤 관련이 있습니까? 나는 당신이 무엇을하려하는지 이해하지 못합니다. jQuery를 Dojo 위젯과 함께 사용하려고한다면, 당신이 잘못하고있는 것입니다. –

+0

내가 본 튜토리얼의 대부분은 두 클래스가 모두 포함 된 새로운 액션 클래스를 만들 것을 요청합니다. 그러나 두 개의 서로 다른 VO 파일을 구현할 수는 없습니다. 나는 내가 이것을 상당히 새로운 것으로 잘못 알고있다. 나는 내가해야 할 일에 대한 조언을 얻을 수있는 코드를 보여주기를 바랬다. – user1287523

관련 문제