Аякс весной MVC - PullRequest
       15

Аякс весной MVC

1 голос
/ 09 ноября 2011

Я пытаюсь получить доступ к объекту, используя ajax весной MVC. Таким образом, как будто у меня есть 2 выпадающих списка для страны и штатов, когда я выбираю страну, она должна соответственно обновлять штаты. То, что я сделал до сих пор, находится в моем .jsp файле

<script>
    function modifyList() {         
        $.post("checklist.html", { country: $('#country').val() }, 
                function(data) { alert(data); });
    }
</script>   

<body>  
    <form:form id="flist" commandName="list">
        <table>         
            <tr>
                <td>
                    <form:label path="country"> Country </form:label>
                </td>
                <td>
                    <form:select path="country" multiple="false" onchange="modifyList()">
                        <form:options items="${list.country}" />
                    </form:select>
                </td>
            </tr>
            <tr>
                <td>
                    <form:label path="state"> State </form:label>
                </td>
                <td>
                    <form:select path="state" multiple="false">
                        <form:options items="${list.state}" />
                    </form:select>
                </td>
            </tr>   
        </table>
</form:form>
</body>

В моем контроллере у меня есть

@RequestMapping(value = "/{path}/checklist", method = RequestMethod.POST)   
public @ResponseBody String list(@RequestParam("country") String country) { 
    System.out.println("selected country" + country);
    return country;
}

Это работает нормально и возвращает мне название страны в состоянии тревоги, но моя проблема в том, что я хочу заполнить свой штат в раскрывающемся списке в соответствии с выбранной страной. Возможно ли, что я могу вернуть весь объект списка? Если да, то как я могу прочитать этот объект и заполнить раскрывающийся список моего состояния?

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

Поскольку вы используете jQuery, вы должны отправить запрос get ajax (выполните поиск в jquery api). Затем, если ваш контроллер MVC возвращает список, ваши возвращенные данные будут списком JSON, и от data[0] до data[data.length-1] у вас будут состояния.

Вы также можете вернуть список объектов в форме {statecode: <code>, statename: <name>}, используя эквивалентный Java-бин в списке, возвращаемом контроллером. В этом случае вы можете изменить названия для разных языков с одинаковым кодом для выбора.

1 голос
/ 09 ноября 2011

AFAIK Теги Spring ничего не знают об Ajax, поэтому вам нужно будет использовать JavaScript, чтобы удалить любые существующие опции и добавить новые, возвращенные из вызова Ajax.

На сайте jQuery есть количество плагинов; YMMV . Я мог бы рассмотреть возможность сделать это вручную, поскольку код относительно короткий .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...