在ajax请求中获取Spring @RequestParam

时间:2016-03-13 18:30:14

标签: javascript java jquery ajax spring

我试图在我的javascript中获取Java对象。我使用ajax请求来获取此对象。 这是我的代码:

@RequestMapping(path = "/sendSMS", method = RequestMethod.POST)
public void sendSMS(HttpServletRequest request, 
                    HttpServletResponse response, 
                    final ModelMap contactModel,
                    @RequestParam(value = "id") final String contactId) { ... }

和我的ajax请求:

var $this = $(this);
$.ajax({
    type : 'POST',
    url : '/contacts/sendSMS?id=${param.id}',
    data : $this.serialize(),
    dataType : 'json',
    success : function(json) {
        alert("success");
        $.each(json,function(index,element) {
            if (index == "message") {
                message = element;
                alert(message);
            }
        }
    }
})

我在Eclipse中遇到的错误是:

java.lang.NumberFormatException: For input string: "${param.id}"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at com.controller.contact.ContactController.sendSMS(ContactController.java:259)

这一行是:

Integer id = Integer.parseInt(contactId);

编辑: 它在我对id进行硬编码时起作用。我只是像这样修改url

var smsUrl = '/contacts/sendSMS?id=113';
url : smsUrl,

现在我的问题是我不知道如何动态获取id值。

4 个答案:

答案 0 :(得分:1)

url : '/contacts/sendSMS?id=${param.id}'更改为url : '/contacts/sendSMS?id=' + ${param.id}

答案 1 :(得分:1)

${param.id}

这个值来自Spring。 JavaScript文件应与JSP文件分开。例如,您可以将Spring变量连接到JSP文件中的HTML标记,如<form>

<form myattribute="${param.id}">
... 
</form>

现在您可以使用jQuery在JavaScript文件中获取此值:

var myId = $('form').attr('myattribute');

$.ajax({ 
    type : 'POST',
    url : '/contacts/sendSMS?id=' + myId 
    ...
});

您还可以使用data- *属性在HTML标记中嵌入自定义数据,如:

 <form data-myvariable="${param.id}">
 ... 
 </form>

然后在JS文件中:

var myId = $('form').data("myvariable");

$.ajax({ 
    type : 'POST',
    url : '/contacts/sendSMS?id=' + myId 
    ...
});

答案 2 :(得分:0)

在您的AJAX调用中,您将url定义为静态值,而id应该是动态的。将其更改为:

 url : '/contacts/sendSMS?id='+${param.id},

答案 3 :(得分:0)

url : '/contacts/sendSMS?id='+${param.id}

应该是神奇的,但正如你在前面提到的答案中提到的那样,可能会混合使用JavaScript和JSP?

您可能还需要查看:Reading a JSP variable from JavaScript