2012-04-27 3 views
2

국가 선택 후 상태를 표시하고 싶습니다.STRUTS2 및 AJAX - 국가 선택, 국가 채우기

JSP

 <s:select label="COUNTRY" name="summaryData.addressCountry" id="addForm_countryCode" 
             list="loyaltyCountryMap" tabindex="" headerKey="US" headerValue="United States" 
             listKey="key" listValue="value.countryName" 
             onchange="getStateList('#addForm_countryCode')"> 

     </s:select> 

<s:select label="STATE" name="summaryData.addressCityCode" headerValue="-Select-" headerKey="-Select-" list="stateList" required="true" cssClass="storedPaymentInput_size1 required" id="stateList"/> 

JAVASCRIPT :

function getStateList() { 
     var countryCode = $('#addForm_countryCode").val(); 
     $.ajax({ 
      url: 'ajaxStateList', 
      dataType: 'html', 
      data: { countryCode : countryCode}, 
      success: function(data) { 
       $('#stateList').html(data); 
      } 
     }); 
    } 

STRUTS.XML

 <action name="ajaxStateList" class="actions.AjaxStateList"> 
     <result name="success"/> 
</action> 

Action 클래스

private List<String> stateList; 

    private String countryCode; 

    public String getCountryCode() { 
     return countryCode; 
    } 

    public void setCountryCode(String countryCode) { 
     this.countryCode = countryCode; 
    } 

    public List<String> getStateList() { 
     return stateList; 
    } 

    public void setStateList(List<String> stateList) { 
     this.stateList = stateList; 
    } 

    public String execute() { 

     LoyaltyStateProvinces.getInstance(); 

     stateList = StateProvinces.getAllStateProvinceByCountryCode(countryCode); 

     for(StateProvince state: states){ 
      stateList.add(state.getStateProvinceCode()); 
     } 


     return SUCCESS; 
    } 

AJAX + Struts2를 사용하여 어떻게 작동하게 할 수 있습니까?

+0

+1 jQuery로 시도해 보았지만 그 비참한 ajax 태그 라이브러리를 사용하지 않았습니다. – Quaternion

답변

2

struts2-json-plugin을 참조하십시오. 액션이 json 결과 유형을 반환하도록합니다 (이 플러그인을 통해). 액션 클래스는 크게 변경되지 않은 상태로 유지 될 수 있습니다.

작업이 JSON을 반환한다는 것을 확인하고 테스트하면 (브라우저에 URL 만 입력하면됩니다). 그런 다음 javaScript가 필요합니다. 나는 당신이 jQuerys $ .ajax 메서드를 사용하는 것을 본다 ... 나는 동일을하지만, json 형식으로 데이터를 가정하는 $.getJSON을 선호한다. 여기

내 자신의 코드에서 일부 JS입니다 : 당신은 세 개의 매개 변수를 알 수 있습니다

  function punch(){ 
       $.getJSON("<s:url namespace="/timeclock/json" action="punch"/>", 
       { 
        badge: $("#input_badge").val() 
       }, 
       function(data) { 
        $("#input_badge").val(""); 
        $("#emp_name").text(data.name); 
        $("#emp_time").text(data.punch); 
        $("#notification").fadeIn("slow", hide); 
       }); 
       return false; 
      } 

: 주먹은 항상 가장 sturts2 URL이 태그로 구성되는 통화에 대한 URL 것. 두 번째 매개 변수는 액션으로 보내지 만이 경우 배지는 "input_badge"라는 ID로 텍스트 필드에 있던 내용으로 설정 한 다음 서버로 보냅니다. 마지막으로 콜백이 성공했을 때 호출되는 함수 인 "name", "punch"와 같은 매개 변수가 반환됩니다.