2016-04-06 3 views
0

У меня есть список записей и вы хотите его обновить. Когда я нажимаю один, он показывает форму со всеми полями ввода, которые уже заполнены с помощью JsonRest. Я редактировал поля и теперь хочу отправить его на сервер для обновления. Как я могу отправить объект с dojo?Отправка данных формы контроллеру пружины с использованием 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

Предполагая, что вы создаете новую запись и не обновляется один, вы можете использовать метод 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 API и JsonRest guide.


EDIT:

Что касается Вашего комментария запроса, в случае, если вы хотели бы отправить объект, используя 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> 
+0

У меня есть список записей, и на событие щелчка отредактировать различные значения одной записи. И затем я хочу сохранить значения в базе данных, вызвав мой контроллер весны. – coder247

+0

Привет, пример, который я вам предоставил, просто расскажите, как это сделать, в основном вызовите store.add(), когда вы сохраняете свои записи. Если вы можете предоставить мне jsfiddle с кодом для вашей формы, я могу предоставить вам более подробный пример вашей фактической реализации. Благодарю. – GibboK

+0

, но нельзя ли отправить форму с dojo без создания магазина? – coder247

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