使用dojo将表单数据发送到spring控制器

时间:2016-04-06 05:43:45

标签: json spring dojo

我有一个记录列表,想要更新一个。当我单击一个时,它会显示一个表单,其中包含已使用JsonRest填充的所有输入字段。我已经编辑了字段,现在我想将它发送到服务器进行更新。 如何使用dojo发送对象?

我试过这样,但在控制器端,该值为空。

on(dom.byId("poolForm"), "submit", function(evt) {
            var formObj = domForm.toObject("poolForm");
            console.log(formObj);

            request.post("/path/to/EditSubmit", {
                data : formObj,
                method : "POST"
            }). then(function(data) {
                console.log("data");
            });
 });

春天我用过:

public void editedForm(HttpServletResponse response, @RequestBody  MyClass myClass) {
    poolParam.getAdd();
}

1 个答案:

答案 0 :(得分:1)

假设您正在创建新记录而不是更新记录,则可以使用方法add(object, options)作为JsonRest

示例:

require(["dojo/store/JsonRest"], function(JsonRest){
  // your store
  var store = new JsonRest({
    target: "/some/resource"
  });

  // add an object passing an id
  store.add({
    foo: "foo"
  }, {
    id: 1
  });
});

可以在JsonRest APIJsonRest guide找到更多信息。

修改

至于您的评论请求,如果您想使用dojo/request/xhr而不是JsonRest发送对象,您可以使用以下示例,基本上:

  • 使用dojo/dom-form实用程序从表单中获取值。此实用程序函数将返回一个对象。 More info here

  • 使用dojo/request/xhr通过Ajax发送先前从dojo/dom-form检索到的对象,这是发送到服务器的数据。 More info here

此处快速演示:

https://jsbin.com/mocoxuhotu/edit?html,output

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
    <link type="text/css" rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/dojo/1.10.0/dijit/themes/claro/claro.css">
    <script data-dojo-config="async: 1" src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
    <script>
        require([
            "dojo/query",
            "dojo/dom-form",
            "dojo/request/xhr",
            "dijit/registry",
            "dijit/form/Form",
            "dojo/parser",
            "dojo/domReady!"
        ], function (
            query,
            domForm,
            xhr,
            registry,
            Form,
            parser
            ) {

            var form = new Form({}, 'myForm');


            query("a.myLink").on("click", function () {

                var data = domForm.toObject(form.domNode);
                xhr.post("/echo/json", {
                    data: data // data to transfer
                }).then(function () {
                    console.log("Success");
                });
            });
        });

    </script>
</head>
<body class="claro">

    <form data-dojo-type="dijit/form/Form" id="myForm">
        <fieldset>
            <ul>
                <li>
                    <label for="name">Name:</label>
                    <input type="text" name="name" />
                </li>
                <li>
                    <label for="firstname">First name:</label>
                    <input type="text" name="firstname" />
                </li>
            </ul>
        </fieldset>
    </form>

    <a class="myLink">Submit the form</a>
</body>
</html>