2015-08-13 1 views
0

Я использую liferay 6.2 CE ga4 и используя Maven (MVC).Как использовать портфолио Ajax в весне?

Вот мой код:

Страна:

<select id="country" name="country"> 
<option value="select">Select Country</option> 
<option value="india">India</option> 
<option value="usa">USA</option> 
</select> 

State: 
<select id="state" name="state"> 
</select> 

<script type="text/javascript"> 
$(document).ready(function(){ 

$("#country").change(function() { 
    var country = $(this).val(); 
     $.ajax({ 
      url: "${findState}" , 
      type: 'POST', 
      datatype:'json', 
      data: "countryName="+country , 
      success: function(data){ 
       $('#state').html(''); 
       $.each(content, function(i, state) { 
        $('#state').append($('<option>').text(state.name).attr('value', state.stateId)); 
       }); 
      } 
     }); 
    }); 
}); 
</script> 

Вот мой Java:

 @ResourceMapping(value="findState") 
    public void findStateForCountry(ResourceRequest request, ResourceResponse response) throws IOException { 
     String countryName = ParamUtil.getString(request, "countryName"); 
     System.out.println("name="+countryName); 
     String name = request.getParameter("countryName"); 
     System.out.println("name2="+name); 
     //var countryName and var name allways NULL 

     JSONArray stateArray = JSONFactoryUtil.createJSONArray(); 
     JSONObject stateObject,stateObject2; 
     if(countryName.equalsIgnoreCase("india")) 
     { 
      stateObject = JSONFactoryUtil.createJSONObject(); 
      stateObject.put("stateId", "1"); 
      stateObject.put("name", "Delhi"); 

      stateObject2 = JSONFactoryUtil.createJSONObject(); 
      stateObject2.put("stateId", "2"); 
      stateObject2.put("name", "Gujrat"); 
     } 
     else{ 

      stateObject = JSONFactoryUtil.createJSONObject(); 
      stateObject.put("stateId", "21"); 
      stateObject.put("name", "LA"); 

      stateObject2 = JSONFactoryUtil.createJSONObject(); 
      stateObject2.put("stateId", "22"); 
      stateObject2.put("name", "California"); 
     } 
     stateArray.put(stateObject); 
     stateArray.put(stateObject2); 
     response.getWriter().println(stateArray); 
    } 

Я хочу использовать параметр пасс, но он не работает. Я использую это:

String countryName = ParamUtil.getString(request, "countryName"); 

И это:

String name = request.getParameter("countryName"); 

Чтобы получить параметр, но они всегда есть NULL.

Что-то не так с моим кодом?


Ответ есть:

Используйте это в you'r LifeRay-portlet.xml

<portlet> 
     <portlet-name>welcome</portlet-name> 
     <requires-namespaced-parameters>false</requires-namespaced-parameters> 
    </portlet> 

ответ

0

Простой способ можно с помощью запроса Параметры строки:

$("#country").change(function() { 
    var country = $(this).val(); 
     $.ajax({ 
      url: "${findState}"+'&countryName='+ country, 
      type: 'GET', 
      datatype:'json', 
      success: function(data){ 
       $('#state').html(''); 
       $.each(content, function(i, state) { 
        $('#state').append($('<option>').text(state.name).attr('value', state.stateId)); 
       }); 
      } 
     }); 
    }); 
}); 

Затем в вашем контроллере вы можете использовать @Re questParam аннотация:

@ResourceMapping(value="findState") 
public void findStateForCountry(ResourceRequest request, ResourceResponse response, @RequestParam(value = "countryName") String countryName) throws IOException { 
    System.out.println("name="+countryName); 

    JSONArray stateArray = JSONFactoryUtil.createJSONArray(); 
    JSONObject stateObject,stateObject2; 
    if(countryName.equalsIgnoreCase("india")) 
    { 
     stateObject = JSONFactoryUtil.createJSONObject(); 
     stateObject.put("stateId", "1"); 
     stateObject.put("name", "Delhi"); 

     stateObject2 = JSONFactoryUtil.createJSONObject(); 
     stateObject2.put("stateId", "2"); 
     stateObject2.put("name", "Gujrat"); 
    } 
    else{ 

     stateObject = JSONFactoryUtil.createJSONObject(); 
     stateObject.put("stateId", "21"); 
     stateObject.put("name", "LA"); 

     stateObject2 = JSONFactoryUtil.createJSONObject(); 
     stateObject2.put("stateId", "22"); 
     stateObject2.put("name", "California"); 
    } 
    stateArray.put(stateObject); 
    stateArray.put(stateObject2); 
    response.getWriter().println(stateArray); 
} 
0

Вы можете использовать назначение URL, как показано ниже.

$(document).ready(function(){ 

$("#country").change(function() { 
    var country = $(this).val(); 
     $.ajax({ 
      url: '<portlet:resourceURL var="findState"></portlet:resourceURL>' , 
      type: 'POST', 
      datatype:'json', 
      data: "countryName="+country , 
      success: function(data){ 
       $('#state').html(''); 
       $.each(content, function(i, state) { 
        $('#state').append($('<option>').text(state.name).attr('value', state.stateId)); 
       }); 
      } 
     }); 
    }); 
});