Estou tendo problemas em configurar o webwork, principalmente o web.xml, estou tentando adicionar IoC no meu projeto, mas quando eu coloco os tags de filtros de IoC no web.xml, não consigo mais acessar as action pelo navegador.
Alguém sabe como configurar??
keller
Julho 14, 2006, 12:15pm
#2
Olá estou usando a IoC do Spring se for isso que voce esta
precisando tem alguns passos…
no seu web.xml
<!-- Configuracao do WebWork2 -->
<servlet>
<servlet-name>webwork</servlet-name>
<servlet-class>
com.opensymphony.webwork.dispatcher.ServletDispatcher
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<filter>
<filter-name>webwork</filter-name>
<filter-class>
com.opensymphony.webwork.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/lib/webwork-2.2.2.jar</taglib-location>
</taglib>
<!-- Configuracao do Spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext*</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Beleza , feito isso crie o webwork.properties em: WEB-INF\classes
E adicione a seguinte linha:
#Webwork ira utilizar o Spring como Container IoC
webwork.objectFactory=spring
Agora sem misterios…
O xwork.xml voce consegue criar de algum exemplo
Entao na sua classe Action ( PesquisaAction )
teremos a declaracao do Service ( BO ) e get & set dele.
Voce NAO fara um “new PesquisaService();”
No Service ( PesquisaService ) voce tera a declaracao
da interface do DAO e o get & set dele.
Voce NAO fara um “new PesquisaDAO();”
Ai é só ter no applicationContext do Spring os beans definidos
que tudo funcionara… WW2+Spring+Hibernate
Qualquer coisa poste ae…
Valeu? Até… :thumbup:
Valeu!!! … era isso mesmo que estava querendo, a pricipio eu só estou querendo controlar a sessão do usuario de login.
Eu tenho que adicinar quais bibliotecas??..estou adicionado as lib default e spring …é isso??
keller
Julho 14, 2006, 4:15pm
#4
Voce tem que adicionar as *“libs do webwork”
E o “spring.jar” que esta no diretorio:
“spring-framework-1.2.8\dist”
No seu classpath , para tudo funcionar certinho…
Qualquer coisa posta ae…
Valeu? Até… :thumbup:
[]s
O eclipse está reclamando do web.xml, pelo que vi é a ordem das tags. Vc etá usando qual DTD para o xml??
O meu ficou assim:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>WebWork Application</display-name>
<servlet>
<servlet-name>webwork</servlet-name>
<servlet-class>
com.opensymphony.webwork.dispatcher.ServletDispatcher
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<filter>
<filter-name>webwork</filter-name>
<filter-class>
com.opensymphony.webwork.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>
/WEB-INF/lib/webwork-2.2.2.jar
</taglib-location>
</taglib>
<!-- Configuracao do Spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext*</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
keller
Julho 14, 2006, 4:57pm
#6
Uhmn , nao estou usando nenhum… :lol:
Da uma olhada como ficou o meu web.xml
<web-app>
<display-name>NaoPossoColocarONomeDaApp</display-name>
<!-- Configuracao do WebWork2 -->
<servlet>
<servlet-name>webwork</servlet-name>
<servlet-class>
com.opensymphony.webwork.dispatcher.ServletDispatcher
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<filter>
<filter-name>webwork</filter-name>
<filter-class>
com.opensymphony.webwork.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/lib/webwork-2.2.2.jar</taglib-location>
</taglib>
<!-- Configuracao do Spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext*</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Configuracao do SiteMesh -->
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
</web-app>
Bom estou usando o sitemesh aqui tambem,
ai é só tirar a parte do sitemesh…
Valeu? Até… :thumbup:
[]s
Eu coloquei o escopo do IoC session, mas ele só fica de um action para o proximo depois ele perde. Como eu faço para o meu objeto ficar durante a sessão do usuario???
components.xml
<components>
<component>
<scope>session</scope>
<class>br.com.clickideia.capacitacao.components.UserSession</class>
<enabler>br.com.clickideia.capacitacao.components.UserSessionAware</enabler>
</component>
</components>
Valeu!!!
keller
Julho 14, 2006, 5:53pm
#8
De uma olhada na interface SessionAware do WebWork,
essa inteface tem um setSession(Map map);
Ai voce da um implements nessa interface na sua Action,
ai voce guarda os objetos que ficam na sessao, assim:
private Map session;
private String descricao; // get & set , nele!
public String pesquisa(){
Pesquisa pesquisa = (Pesquisa) this.session.get("pesquisa");
if (pesquisa == null){
pesquisa = new Pesquisa();
}
pesquisa.setDescricao( this.descricao );
this.session.put("pesquisa", pesquisa);
ActionSupport.SUCCESS;
}
//metodo sobrescrito da interface..
public void setSession(Map session) {
this.session = session;
}
Valeu ? Até… :thumbup:
[]s