Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка данных из формы с помощью Spring MVC, 2 и более entity в одной форме 
V
    Опции темы
m0zg
Дата 6.10.2011, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



Как можно обрабатывать данные в форме с помощью спринговых тегов для форм <form: form /> и привязкой к modelAttribute моего бина, если в этом бине есть ссылки на другие? Т.е., например:

Код

public class User {
    ...
    private Phone phone;
   
    ... getter/setters;
}


В полях формы обращаюсь в полям бина так: 
Код

<form:form modelAttribute="user" ...>
    <form:input path="phone.number" />
...


На сервер данные уходят через JSON. Т.е. серриализуются с помощью jquery'вской либы и отправляются.  Ну в и в контроллере в параметрах метода @RequestBody("user") User user.

Вобщем, при сабмите вылетает эксепшн, ругается на поля такого типа phone.number. Это можно как-то поправить?

Это сообщение отредактировал(а) m0zg - 6.10.2011, 21:53
PM MAIL   Вверх
m0zg
Дата 6.10.2011, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



Вот вырезка из эксепшена:

Код

org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "phone.number" (Class ru....), not marked as ignorable
 at [Source: org.apache.catalina.connector.CoyoteInputStream@1cafe92; line: 1, column: 287] (through reference chain: ru.....User["phone.number"])
    org.codehaus.jackson.map.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:53)


Названия своих полей и классов поменял, т.к. нельзя smile
PM MAIL   Вверх
AlexeyVorotnikov
Дата 7.10.2011, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 3
Всего: 18



В классе User есть методы getPhone() и setPhone(...)?


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
Stolzen
Дата 7.10.2011, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 3
Всего: 48



Код
@RequestBody("user")


Попробуйте убрать это.


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
m0zg
Дата 7.10.2011, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



Цитата(AlexeyVorotnikov @ 7.10.2011,  09:29)
В классе User есть методы getPhone() и setPhone(...)?

Да, конечно, все сеттеры и геттеры присутствуют. Данные уходят, если передать просто через POST. А вот c JSON'ом проблемы.
PM MAIL   Вверх
m0zg
Дата 7.10.2011, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



Цитата(Stolzen @ 7.10.2011,  11:52)
Код
@RequestBody("user")


Попробуйте убрать это.

Попробовал. Теперь при сабмите ошибка не валится. Значения через JSON уходят нормально, как и раньше. Но в метод попадает объект с пустыми значениями. Т.е. из json'a они в энтити не пишутся.


UPD. Ошибся в первом комменте. Там @RequestBody, без ("user").

Это сообщение отредактировал(а) m0zg - 7.10.2011, 13:10
PM MAIL   Вверх
m0zg
Дата 7.10.2011, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



Видимо, тут нужно помудрить с библиотекой Jackson, чтоб она понимала, что это обращение к вложенному классу. Не пойму только как решить эту проблему.
PM MAIL   Вверх
m0zg
Дата 7.10.2011, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 30.7.2007

Репутация: 2
Всего: 2



Всё, проблема решена. Тут решение
PM MAIL   Вверх
Stolzen
Дата 7.10.2011, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 3
Всего: 48



Цитата(m0zg @  7.10.2011,  13:50 Найти цитируемый пост)
Значения через JSON уходят нормально, как и раньше

Сразу не заметил, что через json туда отправляются. Можно сериализовать объект на клиенте через jQuery.param(data) и отправлять на сервер. Если там будет подходящий POJO во входных параметрах, то эти значения в него занесутся.


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0829 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.