Что происходит, если я забываю отмечать Spring SessionStatus как “Завершенный”?

вы делаете это, используя filter и Object entries, или вы также можете использовать reduce.

const person = {
  "name": "John Smith",
  "position": "CEO",
  "year": "2019",
  "job": "front-end"
};

const formatObject = (arr, o) => {
  let finalObject = {};

  Object.entries(o).filter(([key, value]) => {
    if (arr.includes(key)) {
      finalObject = {
        ...finalObject,
        [key]: value
      }
    }

  });

  return finalObject;

}


console.log(formatObject(["name", "year", "job"], person))
17
задан Daniel Alexiuc 19 May 2009 в 02:37
поделиться

2 ответа

EDIT #2: Note that this answer is no longer correct. See @doanduyhai's answer below.

EDIT: Please note that this is for Spring 2.5 and may, but does not necessarily ensure that the same is for Spring 3.x. Double check the docs!

This is along the lines of what @Gandalf said.

Form controllers model a form request lifespan, from initial viewing of the form through form submission. After the form is submitted, the form controller's job is done, and it will remove the command object from the session.

So, to keep the command object in the session between form workflows you will need to manage the session manually. After a clean POST, the object is removed from session.

In short, I believe the setComplete() method is just good practice but is not necessarily required.

EDIT: I just looked in my Spring book to confirm this. I'll quote it:

When @SessionAttribute is not used, a новый командный объект будет создан каждый запрос, даже при рендеринге форма снова из-за ошибок привязки. Если эта аннотация включена, объект команды будет храниться в сеанс для последующего использования, до форма успешно заполнена. затем этот командный объект будет очищен из сеанса. Обычно это используется, когда командный объект является постоянный объект, который должен быть идентичны по разным запросам для отслеживания изменений.

По сути, это то, что я сказал выше. Он сохраняет его в сеансе до тех пор, пока вы A) не вызовете setComplete () или B) контроллер успешно не завершит POST.

12
ответ дан 30 November 2019 в 12:01
поделиться

Есть ли причина, по которой вы захотите это сделать?

из этой ветки: @SessionAttribute Problem

Атрибуты @SessionAttributes работают так же, как sessionForm в SimpleFormController. Он помещает команду (или для любого объекта @SessionAttributes) в сеанс на время между первым и последним запросом (в большинстве случаев начальный GET и последний POST). После этого материал удаляется.

1
ответ дан 30 November 2019 в 12:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: