2016-08-12 5 views
0

web.xmlとspring-servlet.xmlを確認しましたが、間違いはありません。その後私はコントローラと.ajax()をチェックしましたが、何か間違ったことはまだ分かりません。私は、JSON.stringify@RequestParamを試して、json handlerspring-servlet.xmlに加えてみます。 @RequestBody@RequestBody(required = false)に変更しました。それらのどれも働いていない、まだこのメッセージを取得:コントローラはJQuery.ajaxからJSONを受け取ることができません

org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver.handleHttpMessageNotReadable Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public java.lang.String com.Test.Controller.Login.login(com.Test.Model.User) 

ここでは私のコントローラである:

@RequestMapping(value = "/main", method = RequestMethod.GET) 
public String login (@RequestBody User user) { 

    boolean result = userSer.login(user); 

    if (result) 
     return "success"; 
    else 
     return "fail"; 
} 

私のAJAX:

function login() { 
     //I can read the value in chrome's debug. 
     var user = { 
      "username": $("#username").val(), 
      "password": $("#password").val() 
     }; 

     $.ajax({ 
      url: "/login/main", 
      type: "GET", 
      dataType: "json", 
      //contentType:"application/json", 
      data: JSON.stringify(user), 
      success: function() { 
       alert("success") 
      }, 
      error: function() { 
       alert("fail") 
      } 
     }); 
    } 

私は自分でこの問題を解決しようとしましたが、まだ分​​かりません。

答えて

0

まず、JSON本体を送信する場合は、POSTを使用する必要があります。 GETにはURLに変数しかありませんが、これはうまくいきません。またWeb開発では、POSTを使用してユーザーからデータを送信することが一般的なコンセンサスです。私はこれを正常に使用している

、テストは郵便配達を使用して行った:

POST: { 
    "username":"00346845869585", 
    "password":"test" 
} 


@Controller 
@EnableAutoConfiguration 
public class SampleController { 

    @RequestMapping("/") 
    @ResponseBody 
    String home() { 
     return "Hello World!"; 
    } 

    public static class User { 
     private String username; 
     private String password; 

     public String getUsername() { 
      return username; 
     } 

     public String getPassword() { 
      return password; 
     } 

     public User setUsername(String username) { 
      this.username = username; 
      return this; 
     } 

     public User setPassword(String password) { 
      this.password = password; 
      return this; 
     } 
    } 


    @RequestMapping(value = "/main", method = RequestMethod.POST) 
    @ResponseBody 
    public String login(@RequestBody User user) { 

     boolean result = user.getPassword().equals("test"); 

     if (result) 
      return "success"; 
     else 
      return "fail"; 
    } 


    public static void main(String[] args) throws Exception { 
     SpringApplication.run(SampleController.class, args); 
    } 
} 

とJavaScript:あなたの助けを

<html> 
<head> 
    <title>Title</title> 

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> 
</head> 
<body> 

<form> 
    <input type="text" id="username"/> 
    <input type="password" id="password"/> 

    <input type="submit" id="submit"/> 

</form> 

<script> 

    function login() { 
     var user = { 
      "username": $("#username").val(), 
      "password": $("#password").val() 
     }; 

     $.ajax({ 
      url: "/main", 
      type: "POST", 
      data: JSON.stringify(user), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function() { 
       alert("success") 
      }, 
      error: function() { 
       alert("fail") 
      } 
     }); 
    } 

    $("#submit").click(function() { 
     login(); 
     return false 
    }); 

</script> 

</body> 
</html> 
+1

感謝を。私はあなたの方法を試み、成功しました。 –

関連する問題