Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring MVC. Почему из представления возвращается копия модели? / 12 сообщений из 12, страница 1 из 1
24.04.2013, 19:23:16
    #38238968
andrey_IMS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring MVC. Почему из представления возвращается копия модели?
Добрый день!

Пытаюсь освоить Spring MVC.
Есть такой вот кусок кода:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
...
@Controller
public class WeeklyController {
    
    private WorklogRequestFrom request;
    
    @Autowired
    public void setRequest(WorklogRequestFrom request) {
        this.request = request;        
    }    

   @RequestMapping(value="/weekly", method = RequestMethod.GET)
    public String weekly(Locale locale, Model model) {
        model.addAttribute("request", request);
        return "weekly";
    }

    @RequestMapping(value="/weekly", method = RequestMethod.POST)
    public String submitWeekly(WorklogRequestFrom test, BindingResult result, Model model) {
        logger.debug("Hashcode={}",  request.hashCode());
        logger.debug("Hashcode={}",  test.hashCode());
...
    }
...



С помощью аннотации @Autowired я создаю модель request и передаю ее во вьюху.
Почему в обработчик POST запроса возвращается копия модели(test), а не ее измененный оригинал?
...
Рейтинг: 0 / 0
24.04.2013, 19:37:23
    #38238984
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring MVC. Почему из представления возвращается копия модели?
andrey_IMS,

Потому что все объекты инстанциируются во время запроса, волшебства нет:
отдали сервлету модель -> он сделал из нее html -> браузер сделал из неё POST -> сервлет получил текст -> распарсил запрос -> создал объект
...
Рейтинг: 0 / 0
24.04.2013, 19:39:53
    #38238992
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring MVC. Почему из представления возвращается копия модели?
А это, вообще говоря, фигня:
andrey_IMS
Код: java
1.
 @Autowired   public void setReques



Почитайте про scope session
...
Рейтинг: 0 / 0
24.04.2013, 19:50:19
    #38239005
andrey_IMS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring MVC. Почему из представления возвращается копия модели?
ЛагманА это, вообще говоря, фигня:
andrey_IMS
Код: java
1.
 @Autowired   public void setReques



Почитайте про scope session

Что именно фигня?
То что нужно было контроллеру scope session сделать или использование Autowired ?
...
Рейтинг: 0 / 0
25.04.2013, 14:21:02
    #38239978
Олег Артемов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring MVC. Почему из представления возвращается копия модели?
Не пиши так, как ты пишешь:
Объясню на примере:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
    @RequestMapping(value = AbstractCRUDUrlBuilder.SAVE_PREFIX, method = RequestMethod.POST)
    public String save(@ModelAttribute("command") @Valid CapUserCommand command, BindingResult binding) {
        if (binding.hasErrors()) {
            return EDIT_CAP_USER;
        }
        capUserService.saveUser(conversionService.convert(command, UserPresentationDto.class), command.getSendEmail());
        return "redirect:" + urlBuilder.all();
    }



CapUserCommand - собирается из параметров реквеста, не надо ничего инжектить в контроллер. Внутри view эта комманда доступна
как объект "command".
...
Рейтинг: 0 / 0
25.04.2013, 15:53:32
    #38240182
andrey_IMS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring MVC. Почему из представления возвращается копия модели?
Олег Артемов,

Но в таком случае "command" будет каждый раз создаваться заново, а мне нужен синглтон!
...
Рейтинг: 0 / 0
25.04.2013, 16:40:31
    #38240288
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring MVC. Почему из представления возвращается копия модели?
...
Рейтинг: 0 / 0
26.04.2013, 13:21:10
    #38241412
andrey_IMS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring MVC. Почему из представления возвращается копия модели?
Теперь я вообще потерялся.

А в каком случае @Autowired использовать?
...
Рейтинг: 0 / 0
26.04.2013, 13:35:12
    #38241438
andrey_IMS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring MVC. Почему из представления возвращается копия модели?
andrey_IMS,

насколько я понял, @Autowired - всего лишь связывает два бина, и нечего более.
А какой там scope у бинов значения не имеет, так?

@SessionAttributes позволяет передавать объекты из сессии в контроллер.

Но сам контроллер, как бин, он же тоже может иметь session scope, т.е. находится в этой же сессии?
...
Рейтинг: 0 / 0
26.04.2013, 14:02:27
    #38241524
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring MVC. Почему из представления возвращается копия модели?
andrey_IMS,

сессионный контроллер раньше плохо десериализовался, хотя вот тут пишут что уже сделали:

http://stackoverflow.com/questions/3180963/spring-session-scoped-beans-controllers-and-references-to-services-in-terms-o
...
Рейтинг: 0 / 0
26.04.2013, 16:58:08
    #38241921
andrey_IMS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring MVC. Почему из представления возвращается копия модели?
У меня есть 3 класса:

1) Dict . Используется для формирования выпадающего списка во вьюхе
2) Filter . Модель, к которой этот выпадающий список привязан на форме.
3) MyList . Когда постится форма с моделью Filter, контроллер обрабатывает Filter и заполняет коллекцию MyList, которая выводится в той-же вьюхе, под формой.

Т.е. Dict - одинаковый класс для всего приложения, Filter - уникальный в рамках сессии, а MyList создается заново при каждой обработке формы.

Раньше у меня Dict и Filter были @Autowired, а MyList создавался прямо в контроллере.

Что-то я не могу понять как это с помощью session scope делать
...
Рейтинг: 0 / 0
26.04.2013, 17:09:30
    #38241934
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring MVC. Почему из представления возвращается копия модели?
andrey_IMS,


andrey_IMS Dict и Filter были @Autowired
для Вашей задачи это верно.

myList, видимо надо добавить в @SessionAttributes или сделать контроллер сессионным
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring MVC. Почему из представления возвращается копия модели? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]