Problemas struts + Spring

5 respostas
fbeli

Srs,

Estou com problemas para incluir o spring 2.0.8 em um projeto que funciona com struts 1.3.
Qndo incluo o plugin do Spring, as actions do Struts param de funcionar, se tiro o plugin não consigo pegar o contexto

<plug-in className= “org.springframework.web.struts.ContextLoaderPlugIn”>
<set-property property=“contextConfigLocation”
value="/WEB-INF/application.xml" >
</plug-in>

creio que o problema seja a versão do struts pois no struts 1.2.9 (outro projeto) funcionou corretamente.

alguém conhece o problema e como soluciona-lo?

5 Respostas

fbeli

voltei ao projeto e o problema continua.

qndo eu adiciono o plugin abaixo, aparece o erro 404, como se nenhuma action estivsse configurada.

<plug-in className=“org.springframework.web.struts.ContextLoaderPlugIn”>
<set-property property=“contextConfigLocation”
value="/WEB-INF/application-context.xml, /application-context.xml, application-context.xml"/>
</plug-in>

alguém conhece o bug do dpring 1.3.9 com spring?

Leozin

não existe bug hehehe

quando você cria uma integração de Struts com Spring, as actions ficam mapeadas no teu application context. Por exemplo, após a configuração do teu plugin, você tem que colocar no teu application context:

<bean id="umaAction" name="/MinhaAction" class="org.apache.struts.action.Action"> <property name="umaPropriedade" value="Hello World ou whatever" /> </bean>

Onde:
id = Identificador único do teu bean no contexto do Spring
name = É o endereço da action. No exemplo acima, para eu chamar essa action, vou chamar no endereço http://localhost:8080/MinhaAplicacao/MinhaAction.do
class = O tipo de action. DispatchAction, Action etc

OBS.: Essa mesma action tem que estar configurada no struts-config.xml e precisa ser apontada para um org.springframework.web.struts.DelegatingActionProxy. Por exemplo:

<action path="/minhaAction" class="org.springframework.web.struts.DelegatingActionProxy"/>

Agora, o teu action virá direto do Spring, toda bonita, com as propriedades setadas e com tudo que o container de IoC do Spring pode lhe disponibilizar =DDD Note que o path é o mesmo nome da propriedade “name” da tag . Eles precisam ser iguais, OK?

Dicas
Sugiro utilizar as classes DispatchActionSupport, ActionSupport e *Support do Spring. São implementações dos actions do struts que já possuem acesso ao application context :stuck_out_tongue:

fbeli

Vou testar hoje, mas de qqr forma eu tenho a opção de não usar o DelegatingActionProxy, poderia extender o ActionSuport.

Vou testar com o delegating, embora eu ja tenha fetito funcionar antes sem ele em outra versão do struts,

de qqr maneira vou testar.

vlw

Leozin

não não, assim oh:

no teu struts-config.xml PRECISA ser o DelegationActionProxy. Onde você define se deve usar ActionSupport ou DispatchActionSupport ou outro action é no application-context entende?

O plugin do spring funciona assim: Uma vez definindo o teu action como DelegationActionProxy, ele procura no application-context do Spring um bean que possui o mesmo nome do “path” que você define na action.

fbeli

Cara, fiz quase tudo como vc falou…:slight_smile:

bem, na verdade tirei o plugin do struts-config.xml e joguei no web.xml o código abaixo

&lt;listener&gt; &lt;description&gt;&lt;/description&gt; &lt;display-name&gt;Spring ContextLoaderListener&lt;/display-name&gt; &lt;listener-class&gt; org.springframework.web.context.ContextLoaderListener &lt;/listener-class&gt; &lt;/listener&gt; &lt;context-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;param-value&gt;/WEB-INF/application-context.xml&lt;/param-value&gt; &lt;/context-param&gt;

Inicialmente está funcionando, agura tenho q adicionar o tiles, etc, nem sei mais o trabalho q vou ter!!

valeu!

Criado 16 de julho de 2008
Ultima resposta 27 de jul. de 2008
Respostas 5
Participantes 2