Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
59
rated 0 times [  66] [ 7]  / answers: 1 / hits: 23070  / 11 Years ago, mon, april 29, 2013, 12:00:00

I have a JSP in which there is a select list containing entity kind names. When I select an entity kind I need to populate another select list with the field names of the selected entity kind. For that I call a JavaScript function on the onchange event.



In the JavaScript method I need to call a method in the backend that returns an arraylist that contains the field names of the selected entity kind.



How do I call the method with and without Ajax? Also how do I populate the second select list dynamically with the arrayList?


More From » java

 Answers
4

I'll describe two ways to go: with/without AJAX.




  1. If you want to do a synchronous form submit you'll need to attach onchange event to your first select element:



    <select name=select-one id=select-one onchange=this.form.submit()>
    <option value=1>1</option>
    <option value=2>2</option>
    <option value=3>3</option>
    </select>


    When done this way, the form will be submitted and first select option will be available as request.getParameter(select-one), based on which you'll provide data for second dropdown population, typically forwarding to a JSP.


  2. If you want to retrieve a list via AJAX and repopulate another dropdown, you can send an AJAX request and handle returned data in a callback function:



    var val = $('#select-one option:selected').val();
    $.ajax({
    url: servletURL,//servlet URL that gets first option as parameter and returns JSON of to-be-populated options
    type: POST,//request type, can be GET
    cache: false,//do not cache returned data
    data: {one : val},//data to be sent to the server
    dataType: json//type of data returned
    }).done(function(data) {
    var second = $(#select-two);
    $.each(data, function() {
    options.append($(<option />).val(this.value).text(this.label));
    });
    });


    When done this way, the second dropdown will be repopulated without page refresh.



[#78546] Saturday, April 27, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
hallie

Total Points: 503
Total Questions: 114
Total Answers: 103

Location: Iraq
Member since Fri, Jun 5, 2020
4 Years ago
;