Struts 1.2.9 для перехода с MVC на весенний период. - PullRequest
0 голосов
/ 28 июня 2018

Мы переносим приложение Struts 1.2.9 в Spring MVC.

Мы застряли в одной точке действия ActionForm, определенной как «сессия». По умолчанию они находятся в области «запроса» и понимают при миграции на Spring, мы можем использовать их как объекты модели, которые по умолчанию установлены в области «запроса».

Но я теряюсь в том, как обращаться с областью "сеанса". Пожалуйста, сообщите.

распорка-config.xml

<action path="/editSvc" scope="session"
    type="com.xyz.myapp.actions.SvcCodeEditAction" name="svcCodeForm"
    validate="false" parameter="reqCode">
    <forward name="success" path="/WEB-INF/jsp/svccode_edit.jsp" />
</action>

Класс действия

//Code in com.xyz.myapp.actions.SvcCodeEditAction
  if (request.equals(mapping.getScope())) {
        request.setAttribute(mapping.getAttribute(), form);
    } else {
        setSessionAttribute(session,mapping.getAttribute(), form);
    }

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете получить практически те же функции, используя аннотацию Spring @Scope ("session") над объявлением класса bean.

Это хорошо объяснено в справочном руководстве к версии 3.0:

https://docs.spring.io/spring-framework/docs/3.0.0.M3/reference/html/ch04s04.html

В общем, если вы добавите spring-webmvc и spring-web в ваш проект, вы можете использовать

@Bean
@Scope("session")
public SomeBean someBean() {
    return new SomeBean();
}

Или, если вы предпочитаете использовать XML вместо конфигурации Java, вы можете перейти с smth simmilar к этому:

<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>

Также есть хороший урок об этом:

http://www.baeldung.com/spring-bean-scopes

Затем, если вы добавите bean-компонент в модель, он будет автоматически установлен в сеансе, если bean-компонент имеет @SessionScope или @Scope("session") или когда-либо еще объявление области действия bean-компонента. По умолчанию bean-компоненты будут добавлены в область запроса.

...