1

我正在努力发送包含对象作为成员属性的数据。

这是域类。

public class Timeline extends Post{
    String picture;
    User user;
    int like;
    ...
    (getters and setters)
}

而且我已经有了这段代码的 JSON 数据,所以我可以从 'obj' 变量中获取数据。

var obj;
$.ajax({
method: "GET",
dataType: "json",
url: serverRoot + "/json/auth/loginUser",
async: false
  })
  .done(function(data) {
    obj = data;
 });

返回的数据如下所示。

 "user" : {
         "userNo" : 1,
         "name" : "user01",
             ...
      }

下一个 JSON 数据是我想发送到服务器的数据。

{
  "no" : 23,
  "content" : "hihi",
  "createdData" : "2018-07-22",
  "picture" : null,
  "user" : {
     "userNo" : 1,
     "name" : "user01",
         ... **obj JSON data I got above**
  }
}

这是发送到服务器的代码。(这是我一直卡住的东西)

$("#sh-tl-post-btn").click(() => {
  $.ajax({
     type: 'POST',
     url: '../../../json/timeline/add',
    data: {
      picture: $('#sh_tl_upload').val(),
      content: $('#sh_tl_post_write').val(),
      **user: [{"userNo":obj.userNo}]**
    },
  }).done(function() {
    console.log("inserted.");
    location.href = "timeline.html"
   });
});

映射器文件如下所示。

<insert id="insert" parameterType="Timeline">
    <choose>
        <when test="picture != ''">
            insert into TML(tmlno, uno, tmlpath)
            values(#{no}, #{userNo}, #{picture})
        </when>
        <otherwise>
            insert into TML(tmlno, uno)
            values(#{no}, #{userNo})
        </otherwise>
    </choose>
</insert>

我一直在寻找在这里写什么而不是 user: [{"userNo":obj.userNo}],这个......

我一直在努力

user : {"userNo" : obj.userNo}
user.userNo : obj.userNo
user.[0].userNo : obj.userNo
...

但控制台一直说

    [Request processing failed; nested exception is 
     org.springframework.beans.InvalidPropertyException:.....

这种错误。

有没有人可以帮助我如何通过 ajax JSON 数据绑定嵌套对象的属性?提前致谢。

4

0 回答 0