2015-03-21 2 views
0

LoginController.java:При использовании @response и @request для JSON, я встречаюсь с некоторыми проблемами

@Controller 
@RequestMapping("/user") 
public class LoginController { 
@RequestMapping(value="receive", method=RequestMethod.POST, consumes="application/json") 
    @ResponseBody 
    public RegInfo receiveData(@RequestBody RegInfo info){// 

     System.out.println("come here"); 
     System.out.println(info.getRealname()); 
     return info; 
    } 
} 

register.xml:

$("#sub").click(function(){ 
    var m = { 
      "realname": $("#real_name").val(), 
      "phonenumber": $("#phone_number").val()    
     }; 
    $.ajax({ 
     type:"POST", 
     url:"/demo/user/receive", 
     data:m, 

     dataType:"json", 
     contentType:"application/json; charset=utf-8", 
     async:false, 
     success:function(data){ 
      alert("nihao"); 
     }, 
     erroe:function(data){ 
      alert("保存失败 ") 
     } 
    }) 
}); 

RegInfo.java:

public class RegInfo { 

    private String realname; 

    private String phonenumber; 

    //private boolean sex; 

    public RegInfo(){ 

    } 

    public void setRealname(String realname){ 
     this.realname= realname; 
    } 
    public String getRealname(){ 
     return realname; 
    } 

    public void setPhonenumber(String phonenumber){ 
     this.phonenumber = phonenumber; 
    } 
    public String getPhonenumber(){ 
     return phonenumber; 
    } 

demo-servlet.xml:

<context:component-scan base-package="com.lhao.core"/> 

<!-- 默认的注解映射的支持 --> 
<mvc:annotation-driven/> 
<context:annotation-config/> 

Я импортировал jackson-annotations-2.1.4.jar, jackson-core-2.1.4.jar, jackson-databind-2.1.4.jar в lib, но я не вижу печати в консоли, и он показывает «400 плохой запрос» в Chrome. Я пробовал несколько способов, но это не влияет.

+0

'400 Bad Request' обычно появляется, когда Spring/jackson не может десериализовать ваш запрос данному типу. Ваша модель выглядит хорошо для меня, поэтому я сначала попытаюсь удалить параметр 'consumes' в' 'RequestMapping''. – beerbajay

ответ

0

Вам необходимо преобразовать вашу javascript-переменную в json перед отправкой запроса на сервер. JSON.stringify() выполняет преобразование. Основываясь на приведенном выше коде, это должно решить проблему. хорошо надеюсь.

$("#sub").click(function(){ 
    var m = { 
      "realname": $("#real_name").val(), 
      "phonenumber": $("#phone_number").val()    
     }; 
    $.ajax({ 
     type:"POST", 
     url:"/demo/user/receive", 
     data:JSON.stringify(m), 

     dataType:"json", 
     contentType:"application/json; charset=utf-8", 
     async:false, 
     success:function(data){ 
      alert("nihao"); 
     }, 
     erroe:function(data){ 
      alert("保存失败 ") 
     } 
    }) 
}); 
+0

Благодарю вас. Я решил эту проблему. Сначала я попробовал JSON.stringify (m), но это не влияет. Затем я заменю jackson-annotations-2.1.4.jar .. с jackson-core-asl.jar и jackson -mapper-asl-1.8.5.jar, он действует. – luohao

Смежные вопросы