Я хочу вызвать метод контроллера после того, как пользователь выберет значение из раскрывающегося списка в JSP. Но не получить, как двигаться вперед. Мой jsp выглядит так:
<script type="text/javascript">
function repopulate(){
alert(document.getElementById('test').value);
}</script>
<form:select id="test" path="billingOverview.msisdnNumber" onChange="repopulate()">
<form:option value="" label="All" />
<c:forEach var = "billingOver" items = "${billingOverview.prepaidBillingInfo}">
<form:option value="${billingOver.msisdn}" ><c:out value="${billingOver.msisdn}"/></form:option>
</c:forEach>
</form:select>
Dropdown подходит хорошо, и когда я выбираю любую ценность, я получаю эту ценность в предупреждении тоже. Теперь я не могу вызвать метод контроллера и не могу передать это выбранное значение. Я использую весенний портлет mvc. Кто-нибудь, пожалуйста, помогите мне в этом.
Вы уже получаете выбранное значение в предупреждении, поэтому вы можете использовать следующий код вместо предупреждения в своем коде -
var parameter = document.getElementById('test').value;
window.location.href = controllerURL+"?param="+parameter ;
где controllerURL может быть таким
http://localhost:8080/applicationname/yourFunction
и ваш контроллер должен принять такой параметр -
@RequestMapping(value="/yourFunction" method = RequestMethod.GET)
public String getParam(@RequestParam("param") int param, ModelMap model) {
// method implementation
}
Вы не упомянули, что вам нужно получить ответ от сервера и обновить форму или просто вызвать контроллер и перенести пользователя в другое представление.
Если вы хотите получить ответ и обновить форму, вам нужно будет использовать ajax, добавьте jquery api в свой проект. проверьте весеннюю демонстрацию mvc для разных возможностей mvc.
Изучите ajax, это будет хороший инструмент в ваших доспехах. пример ajax-вызова:
<script type="text/javascript" >
function repopulate(){
var formdata = $('#test').serialize();
$.ajax({
url: <controller_url>,
type:"POST", //or GET
data: formdata
}).done(function(data,textStatus,response) {
alert(response.responseText);
});
}
</script>
если вы просто хотите вызвать контроллер, введите URL-адрес контроллера в форме "действие".
<form:select id="test" path="billingOverview.msisdnNumber" action="Controller_url">
AJAX
для вызова сервлета, когда значение изменяется из выпадающего списка.