0

プロジェクトがAjaxを使用してJSONオブジェクトをSprings-MVCに投稿するプロジェクトに取り組んでいます。私は多くの変更を加えてきましたが、それ以上エラーが発生しないところまで到達しましたが、必要なオブジェクトでSpringにPOSTされているデータが表示されません.

これが私のSpring Controllerです。

@RequestMapping(value="/AddUser.htm",method=RequestMethod.POST)
    public @ResponseBody JsonResponse addUser(@ModelAttribute(value="user") User user, BindingResult result ){
        JsonResponse res = new JsonResponse();

        if(!result.hasErrors()){
            res.setStatus("SUCCESS");
            res.setResult(userList);
        }else{
            res.setStatus("FAIL");
            res.setResult(result.getAllErrors());
        }

        return res;
    }

ブレークポイントを設定すると、USER オブジェクトがデータを取得しません。次は、私の USER オブジェクトのコピーです。

public class User {

    private String name = null;
    private String education = null;

    private List<String> nameList = null;
    private List<String> educationList = null;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEducation() {
        return education;
    }
    public void setEducation(String education) {
        this.education = education;
    }
    public List<String> getNameList() {
        return nameList;
    }
    public void setNameList(List<String> nameList) {
        this.nameList = nameList;
    }
    public List<String> getEducationList() {
        return educationList;
    }
    public void setEducationList(List<String> educationList) {
        this.educationList = educationList;
    }

次に、Ajax、JSON 投稿を行う JavaScript コードについて説明します。

function doAjaxPost() {  

      var inData = {};

      inData.nameList = ['kurt','johnathan'];
      inData.educationList = ['GSM','HardKnocks'];

      htmlStr = JSON.stringify(inData);
      alert(".ajax:" + htmlStr);


    $.ajax({
         type: "POST",
         contentType: "application/json; charset=utf-8",
         url:  contexPath + "/AddUser.htm",
         data: inData,
         dataType: "json",
         error: function(data){
              alert("fail");
         },
         success: function(data){
              alert("success");
         }
         });

};

助けていただけるなら今すぐ私にさせてください?? 私はこれをできるだけ早く機能させる必要があります...ありがとう

4

1 に答える 1

3

また、コントローラーにある RequestMapping アノテーションでヘッダーを指定する必要があります。

@RequestMapping(headers ={"Accept=application/json"}, value="/AddUser.htm", method=RequestMethod.POST)

また、URL パスの .htm を削除します。htm は、ある種のリクエスト タイプ オーバーライドです。.htm を使用すると、要求を従来の html 要求として処理する Web サーバーが指定されます。.json を使用すると、リクエストが json リクエストとして処理されることを Web サーバーに指定します。

于 2012-06-04T09:47:42.840 に答える