1

我想在用户从 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>

下拉菜单很好,当我选择任何值时,我也会在警报中获得该值。现在我无法调用控制器方法,也无法传递这个选定的值。我正在使用spring portlet mvc。有人请帮我解决这个问题。

4

2 回答 2

3

您已经在警报中获得了选定的值,因此您可以在代码中使用以下代码代替警报 -

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
}
于 2014-08-01T12:56:55.693 回答
0

您没有提到您需要从服务器获得一些响应并更新表单,或者只是调用控制器并将用户带到另一个视图。

如果您想获得响应并更新您必须使用 ajax 的表单,请在您的项目中添加 jquery api。查看spring 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 放入表单“action”属性中。

<form:select id="test" path="billingOverview.msisdnNumber"  action="Controller_url">
于 2014-08-01T13:31:24.250 回答