/ / Struts2 Прехващачи и интеграция на пружината - пружина, подпори2, прехващач, прехващач

Struts2 прехващачи и пружинна интеграция - пролет, подпори2, прехващачи, прехващачи

Въпросът ми е малко основен, тъй като все още се уча на Struts2 и Spring, както и на тяхната интеграция.

<interceptors>
<interceptor name="validation" class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"/>

<interceptor-stack name="simpleStack">
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,execute</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>

<default-interceptor-ref name="simpleStack"/>

И ако в applicationContext.xml имам:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="user" class="struts.model.User"/>
<bean id="registerUserAction" class="struts.actions.UserInformationAction">
<property name="userBean" ref="user"/>
</bean>

<bean id="chooseUsernamePasswordAction" class="struts.actions.ChooseUsernameAction">
<property name="userBean" ref="user"/>
</bean>
</beans>

Без дефинирания прехващач потребителят бинустойчиви в двете действия (registerUserAction -> JSP -> chooseUsernamePasswordAction) и мога да получа достъп до свойствата. След като прихващача се въведе, изглежда, че стойностите се изтриват.

  1. Първо от това, което прочетох, изглежда, че може да бъдеправим всичко погрешно. с Spring интегрирани всички тези елементи са в един режим по подразбиране, което може да не е правилно, тъй като много потребители ще се регистрират и така всеки трябва да има свой собствен Action / User beans.
  2. Какво се случва или трябва да се направи, за да се предаде информацията и да се задействат правилно прехващачите.

Отговори:

1 за отговор № 1

ако Вие изрично дефинирате действията си в конфигурацията Spring, те трябва да бъдат дефинирани като scope="prototype", Сравнително необичайно е да ги дефинирате ръчно, освен ако не искате да използвате XML конфигурация за всичко, като инжектиране на услуги и т.н.

Не е съвсем ясно за мен каква е целта ви с потребителския боб може използвайте пролетен сеанс, наличен сПролетните уеб контексти. Аз не съм сигурен колко е необходимо, аз обикновено го правя ръчно и извлича боб от сесията, когато всъщност имам нужда от него. Вероятно няма значение.

Обърнете внимание също така, че стекът ви елиминира по същество всичко Функционалност Struts 2, като конвертиране на параметри на формуляри в свойства на действие. Това може бъдете това, което възнамерявате, но е малко вероятно.


0 за отговор № 2

Погледни struts-default.xml, Сега проверете името на прехващащия стек defaultStack, В края на документа, този стек е зададен като стак по подразбиране. Както обясни Дейв Нютон, цялата магия на подпорите 2 идва от прехващачите.

По принцип, когато зададете стека си по подразбиранестека, да замени стека, който съдържа 17 прехващачи от един, който съдържа само 1. По този начин се отказа от много подпори 2 функционалности като инжектиране на параметри например, предоставени от прихващащия Парам.

Също така имайте предвид, че прехващачът за валидиране е включен в defaultStack, но с различен параметър excludeMethods.


0 за отговор № 3

Ние също използваме същата структура на проекта

Struts2 + Spring + хибернация

Преди да използваме прехващача Struts, можем да преминем параметъра

Но след като използваме прехващача, не можем да изпратим параметрите (стойностите са нула)

За да избегнете това, използвайте params прехващач, след което можете да преминете параметрите

напр .:

<action name="doUpload_valid1" method="importExcel" class="validationAction">
<interceptor-ref name="params"/>
<interceptor-ref name="fileUpload"/>

<result name="error">jsp/cmdbValidPage.jsp</result>
<result name="success">jsp/testJob.jsp</result>
</action>