dijit/form/Form
содержит несколько утилит, которые работают с виджетами формы Dijit (dijit/form/TextBox
, dijit/form/Select
, ...). Я не знаю, используете ли вы те или нет, но ответ очень похож с или без. Идея состоит в том, чтобы оформить форму для объекта и передать эту форму с помощью вызовов AJAX.
С Dijit виджетов форм
Если вы используете форму виджетов Dijit, вы можете сериализовать всю форму, используя getValues()
на вашей форме виджета. Это будет сериализовать форму для вас:
xhr.post("mySubmitUrl", {
data: registry.byId("myForm").getValues()
}).then(function() {
console.log("Success");
});
Я также сделал JSFiddle, чтобы продемонстрировать это.
С нативных элементов формы
Если вы используете собственные элементы формы, не имеют преимуществ использования dijit/form/Form
. Для сериализации формы вы можете использовать функцию toObject()
с модуля dojo/dom-form
. Эта функция требует, чтобы вы передали узел DOM формы.
Это означает, что вы можете либо пройти domnode своего виджета dijit/form/Form
, либо полностью пропустить эту часть и просто получить доступ к узлу DOM напрямую.
xhr.post("mySubmitUrl", {
data: domForm.toObject(registry.byId("myForm").domNode)
}).then(function() {
console.log("Success");
});
Пример JSFiddle можно найти here.
Теперь на стороне сервера (Spring), вы просто добавить метод, который будет обрабатывать этот конкретный запрос, например:
@RequestMapping(value = "mySubmitUrl", method = RequestMethod.POST)
public void doPostForm(@RequestParam("name") String name, @RequestParam("firstname") String firstname) {
// Do stuff
}
ли вы использовать собственные элементы формы (только простые элементы ввода) или 'dijit/form' (например,' dijit/form/TextBox', ...)? – g00glen00b
Мои входные данные в форме - все виджеты dijit. –