Problema no IoC do WW usando o artigo do Guj =(

30 respostas
M

Pessoal,

estou tentando fazer o exemplo de login em Webwork de um artigo aqui do GUJ e esta dando erro. O IoC não esta funcionando, bem, como no artigo, tenho o components.xml no classpath da app:

<components>
    <component>
        <scope>session</scope>
        <class>com.foo.component.UserSession</class>
        <enabler>com.foo.component.UserSessionAware</enabler>
    </component>
</components>

a interface UserSessionAware:

package com.foo.component;

public interface UserSessionAware {

	public void setUserSession( UserSession userSession );
	
	public UserSession getUserSession();
}

o UserSession:

package com.foo.component;

import com.foo.model.User;

public class UserSession implements java.io.Serializable {

	private User user;

	public void setUser( User user ) {
		this.user = user;
	}
	
	public User getUser() {
		return user;
	}

}

e a SystemAction, q implementa a UserSessionAware e tem um UserSession:

package com.foo.action;

import com.opensymphony.xwork.ActionSupport;
import com.opensymphony.xwork.ModelDriven;

import com.foo.component.UserSession;
import com.foo.component.UserSessionAware;

public abstract class SystemAction extends ActionSupport
	implements ModelDriven, UserSessionAware {

	protected UserSession userSession;

	protected SystemAction() { }

	public void setUserSession( UserSession userSession ) {
		this.userSession = userSession;
	}
	
	public UserSession getUserSession() {
		return userSession;
	}

	public abstract Object getModel();

}

e aqui esta o erro, na action de login q usa esse userSession herdado da SystemAction para setar o User qnd o login estiver certo:

package com.foo.action;

import com.foo.model.User;

public class LoginAction extends SystemAction
	implements DisableSecurityAction {

	private User model = new User();

	public String execute() {
		
		if ( !model.getUsername().equals( "matheus" ) ) {
			
			addActionError( "Ocorreu um erro" );
			addFieldError( "username", "Usuário inválido" );
			return ERROR;
		}

		if ( !model.getPassword().equals( "matheus" ) ) {
			
			addActionError( "Ocorreu um erro" );
			addFieldError( "password", "Senha inválida" );
			return ERROR;
		}

		this.userSession.setUser( model );

		return SUCCESS;
	}

	public Object getModel() {
		return model;
	}

}

ok, mas na linha this.userSession.setUser( model ) esta estourando uma NPE, então a conclusão q cheguei foi q o IoC não ta funfando… alguém pode me ajudar? :roll:

30 Respostas

_fs

No teu webwork-default.xml tem isso aqui?

<interceptor-stack name="defaultStack">
	<interceptor-ref name="component" />
M

a classe do component ta definida no webwork-default.xml já

<interceptors>
   ...
   <interceptor name="component" class="com.opensymphony.xwork.interceptor.component.ComponentInterceptor"/>
   ...
</interceptors>

e no xwork.xml eu tenho essa pilha:

<interceptors>
	<interceptor name="appsecurity" class="com.foo.interceptor.ApplicationSecurityInterceptor"/>

	<interceptor-stack name="systemDefaultStack">
		<interceptor-ref name="model-driven"/>
		<interceptor-ref name="component"/>
		<interceptor-ref name="appsecurity"/>
		<interceptor-ref name="validationWorkflowStack"/>
		<interceptor-ref name="logger"/>
		<interceptor-ref name="timer"/>
	</interceptor-stack>
</interceptors>

e deixo como interceptor default:

<default-interceptor-ref name="systemDefaultStack"/>
Lucas_Teixeira

Ei Matheus,

Já parou para ver as facilidades e maravilhas que a integração do Webwork e o Spring te provê? Esqueça a dimensão do Spring e seus tão ditos frameworks a parte. Trabalhando apenas com o core dele você consegue maravilhas na injeção de componentes e beans.

J2Alex

Olá Lucas,

Onde eu posso encontrar algum bom material sobre Spring, com exemplos práticos da sua aplicação (em especial sobre sua integração com Webwork, que me interessa bastante…)

Obrigado!

Lucas_Teixeira

J2Alex:
Olá Lucas,

Onde eu posso encontrar algum bom material sobre Spring, com exemplos práticos da sua aplicação (em especial sobre sua integração com Webwork, que me interessa bastante…)

Obrigado!

E ai Alex,

Cara, é tudo mto simples de se trabalhar. Este nível de integração que propus, apenas usa o core do Spring Framework. No caso, vai usar a DI (Dependency Injection) para injetar os teus beans (prefiro tratar como ‘componentes’).

Então como isso? Você tem o teu applicationContext (vulgo appCtx) onde mapeia os tais componentes injetáveis (que na verdade poderão ser implementações de teus DAOs, poderão ser recursos externos ou até tuas próprias actions). Define também o modo com que a aplicação se amarra (wiring) entre os componentes e manda ver. A integração xwork-spring faz tudo isso. (=

M

Lucas Teixeira:
Ei Matheus,

Já parou para ver as facilidades e maravilhas que a integração do Webwork e o Spring te provê? Esqueça a dimensão do Spring e seus tão ditos frameworks a parte. Trabalhando apenas com o core dele você consegue maravilhas na injeção de componentes e beans.

Sim mas a minha intenção não é usar o Spring, é conseguir colocar pra rodar o exemplo do WW que esta no artigo do Guj. Eu pessoalmente nem iria usar o IoC, mas como consta no artigo, fiquei encucado de não ter coseguido fazer funcionar :roll:, ai apelei pra ajuda.

J2Alex

Lucas,

Que vantagens eu tenho em utilizar Spring com Webwork?

Lucas_Teixeira

Um exemplo, eu mapearia minhas actions no appCtx desta forma:

<bean id="SpringAction" class="br.com.lucastex.action.SpringAction" singleton="false" />

Bingo, aí no xwork:

<action name="exemplo" class="SpringAction"> <result name="success" type="velocity">ok.vm</result> </action>

Isso faz com que qdo ele procure a classe “SpringAction” ele vá até o appCtx e veja qual a classe definida. Isso até por luxo, dá para fazer com Interceptors e outras coisas…

O + legal, é definir na tua action os atributos, no caso:

private IDaoUsuario daoUsuario;

Aí você define nova tag no appCtx.

<bean id="usuarioDao" class="br.com.lucastex.dao.hibernate.UsuarioDao" singleton="false" />

Pronto, isso vai ser injetado automaticamente, (desde que é claro, hibernate.UsuarioDao seja uma implementacao de IUsuarioDao).

Bom, a questão não é a vantagem de se utilizar o Spring com o Webwork, e sim a Dependecy Injection para isso aí. Poderia ser com outro fwk de Ioc, no caso até o Pico… Mas a integração dele me deixa feliz (integracao = definir o nome e as classes dos beans que serão injetados e não ter uma nullpointer).

Em resumo é isso, tenha o atributo com o mesmo nome da definicao do bean (autowire by name), tenha o atributo na classe com teu set e bingo!!!

Ai um dia eu vou mudar toda a persistencia de hibernate para JDBC, o que faco? Crio novos Daos que implementam as interfaces (IUsuarioDao) e apenas vou no meu appCtx e digo que essa referencia agora recebe uma implementacao via JDBC, no caso:

<bean id="usuarioDao" class="br.com.lucastex.dao.jdbc.UsuarioDao" singleton="false" />
Lucas_Teixeira

Lindo né (;

é legal trabalhar baseado em componentes tb… Tipo, o conceito de componente já diz que é algo plugável na aplicação. Então trabalhe um pouco mais as ‘classes’ deixe elas bem modularizadas e ‘plugaveis’, e faça componentes para o teu sistema! Pluge-os com o Spring!

(;

J2Alex

Valeu Lucas! Vou dar uma pesquisada no Spring. :slight_smile:

M

óh, e agora, quem poderá me ajudar :expressionless:

smota

Você editou o web.xml ?!? Tem que adicionar os listeners:

<listener>
    <listener-class>com.opensymphony.webwork.lifecycle.SessionLifecycleListener</listener-class>
</listener>

<listener>
    <listener-class>com.opensymphony.webwork.lifecycle.ApplicationLifecycleListener</listener-class>
</listener>
M

smota:
Você editou o web.xml ?!? Tem que adicionar os listeners

Quem melhor do que o autor do artigo nessas horas :D… smota, os 2 listeners estão no meu web.xml sim. :roll:

F

Ja conseguiu?

Se nao foi ainda. Qual a ordem que ta o teu web.xml?

]['s

_fs

fab, se a ordem tá errada dá erro na inicialização.

(‘fab’ XD)

F

LIPE:
fab, se a ordem tá errada dá erro na inicialização.

(‘fab’ XD)

Quando tive esse problema nao dava erro nao. :cry:

O uq eé: (‘fab’ XD) ? :roll:
]['s

M

fabgp2001:
Ja conseguiu?

Se nao foi ainda. Qual a ordem que ta o teu web.xml?

]['s

Ainda não foi, não tive tempo de mecher mais, mas… essa é a ordem:

<?xml version="1.0" ?>
&lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"&gt;

&lt;web-app&gt;

   &lt;listener&gt;
      &lt;listener-class&gt;com.foo.arch.Initializer&lt;/listener-class&gt;
   &lt;/listener&gt;

   &lt;listener&gt;
      &lt;listener-class&gt;com.opensymphony.webwork.lifecycle.SessionLifecycleListener&lt;/listener-class&gt;
   &lt;/listener&gt;

   &lt;listener&gt;
      &lt;listener-class&gt;com.opensymphony.webwork.lifecycle.ApplicationLifecycleListener&lt;/listener-class&gt;
   &lt;/listener&gt;

   &lt;servlet&gt;
      &lt;servlet-name&gt;webwork&lt;/servlet-name&gt;
      &lt;servlet-class&gt;com.opensymphony.webwork.dispatcher.ServletDispatcher&lt;/servlet-class&gt;
      &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
   &lt;/servlet&gt;

   &lt;servlet-mapping&gt;
      &lt;servlet-name&gt;webwork&lt;/servlet-name&gt;
      &lt;url-pattern&gt;*.action&lt;/url-pattern&gt;
   &lt;/servlet-mapping&gt;

   &lt;taglib&gt;
      &lt;taglib-uri&gt;webwork&lt;/taglib-uri&gt;
      &lt;taglib-location&gt;/WEB-INF/lib/webwork-2.1.7.jar&lt;/taglib-location&gt;
   &lt;/taglib&gt;

&lt;/web-app&gt;
smota

Bem, aparentemente, não há problemas então começamos a seção chutes.

Ops, antes dos chutes vale investigar fazendo:

:arrow: Beba da fonte e certifique-se de estar realmente tudo no lugar.

:arrow: Ative o log (log4j) em modo DEBUG e coloque a saída aqui, os interceptors logam o que estão fazendo, deve dar alguma luz.

Depois nós começamos a chutar … tive problemas com IoC em uma versão específica do Tomcat e tentei de todo modo achar o problema mas não consegui (debugando o Xwork mesmo), tente outra :wink:

M

eu ja estou cavocando na fonte a um tempinho mesmo… e bem, se tu teve problemas com um Tomcat, hum… meu container é o BEA WebLogic com service pack 3, só oque faltava ser por causa do container :?

M

a propósito, tentei no Tomcat e da o mesmo NPE :frowning:

smota

Menos mal … vc nao vai precisar inventar uma desculpa esfarrapada sem pé nem cabeça pra explicar o problema, é só achar o problema :shock:

EDITADO: E os logs?

M

smota:

EDITADO: E os logs?

não tive tempo de brincar nele ainda hj, to atolado aqui no trampo :x

M

Bem, essa é a saída toda… Notem q o NPE ocorre bem na linha em q eu chamo setUser() no userSession q devia ser instanciado pelo WW:

this.userSession.setUser( model ); // LoginAction.java:26
Jun 3, 2005 9:17:10 AM com.opensymphony.xwork.interceptor.LoggingInterceptor logMessage
INFO: Starting execution stack for action login
Jun 3, 2005 9:17:10 AM com.opensymphony.webwork.dispatcher.ServletDispatcher serviceAction
SEVERE: Could not execute action
java.lang.NullPointerException
	at com.foo.action.LoginAction.execute(LoginAction.java:26)
	at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:283)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:166)
	at com.opensymphony.xwork.interceptor.TimerInterceptor.intercept(TimerInterceptor.java:63)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
	at com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.intercept(DefaultWorkflowInterceptor.java:55)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
	at com.foo.interceptor.ApplicationSecurityInterceptor.intercept(ApplicationSecurityInterceptor.java:21)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
	at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:116)
	at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:272)
	at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:237)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
	at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
	at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:316)
	at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6452)
	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
	at weblogic.security.service.SecurityManager.runAs(SecurityManager.java)
	at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
	at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
	at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
	at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
&lt;Jun 3, 2005 9:17:10 AM BRT&gt; &lt;Error&gt; &lt;HTTP&gt; &lt;BEA-101020&gt; <[ServletContext(id=3270,name=ww,context-path=/ww)] Servlet failed with Exception
java.lang.NullPointerException
	at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:422)
	at com.opensymphony.webwork.dispatcher.ServletDispatcher.sendError(ServletDispatcher.java:396)
	at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:282)
	at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:237)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
	at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
	at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:316)
	at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6452)
	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
	at weblogic.security.service.SecurityManager.runAs(SecurityManager.java)
	at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
	at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
	at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
	at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
>
smota

Nao era esse log :?

ehehe … coloque em modo DEBUG (log4.properties) e execute a ação, o log vai ter um monte de mensagens de inicializacao do Webwork (ele carrega o xwork só na primeira requisicao a uma action, nao na inicializacao do container) e depois os interceptors vao dizendo “passei/fiz isso/nao fiz aquilo” … esse log é que pode ajudar.

M

sim sim, eu coloquei pra debug o log4j mas ele não ta logando em debug, continua mostrando só info, não to entendendo, é como se tivesse arquivos em /WEB-INF/classes q ele lê (xwork.xml, validators.xml…) e outros não (components.xml, log4j.properties …) :?

/WEB-INF
    |---- /classes
              |---- xwork.xml
              |---- webwork-default.xml
              |---- webwork.properties
              |---- validators.xml
              |---- components.xml
              |---- log4j.xml
smota

Vai ver esse é seu problema :-o

Tem certeza que o deploy está certo?!? (abre ele lá mesmo, depois de explodido e confere)

M

Vai ver esse é seu problema :-o

Tem certeza que o deploy está certo?!? (abre ele lá mesmo, depois de explodido e confere)

já o fiz, esta tudo lá lá certinho no war :expressionless:

F
matheus:
fabgp2001:
Ja conseguiu?

Se nao foi ainda. Qual a ordem que ta o teu web.xml?

]['s

Ainda não foi, não tive tempo de mecher mais, mas.. essa é a ordem:

<?xml version="1.0" ?>
<!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>

   <listener>
      <listener-class>com.foo.arch.Initializer</listener-class>
   </listener>

   <listener>
      <listener-class>com.opensymphony.webwork.lifecycle.SessionLifecycleListener</listener-class>
   </listener>

   <listener>
      <listener-class>com.opensymphony.webwork.lifecycle.ApplicationLifecycleListener</listener-class>
   </listener>

   <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>

   <taglib>
      <taglib-uri>webwork</taglib-uri>
      <taglib-location>/WEB-INF/lib/webwork-2.1.7.jar</taglib-location>
   </taglib>

</web-app>

Cara desculpa, nao tinha visto aqui tua resp.

Coloca isso aqui e faz um teste.

<filter>
    <filter-name>container</filter-name>
    <filter-class>com.opensymphony.webwork.lifecycle.RequestLifecycleFilter</filter-class>
</filter>

<filter-mapping>
   <filter-name>container</filter-name>
   <url-pattern>*.action</url-pattern> <!-- modify appropriately -->
</filter-mapping>

Adiciona antes dos listeners.

]['s

M

coloquei o filter, e agora antes de estourar a NPE estoura isso… :roll:

java.lang.IllegalArgumentException: wrong number of arguments
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java)
	at com.opensymphony.xwork.interceptor.component.DefaultComponentManager.setupResource(DefaultComponentManager.java:246)
	at com.opensymphony.xwork.interceptor.component.DefaultComponentManager.loadResource(DefaultComponentManager.java:197)
	at com.opensymphony.xwork.interceptor.component.DefaultComponentManager.initializeObject(DefaultComponentManager.java:104)
	at com.opensymphony.xwork.interceptor.component.ComponentInterceptor.before(ComponentInterceptor.java:33)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)
	at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:116)
	at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:272)
	at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:237)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
	at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
	at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:28)
	at com.opensymphony.webwork.lifecycle.RequestLifecycleFilter.doFilter(RequestLifecycleFilter.java:67)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:28)
	at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6458)
	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
	at weblogic.security.service.SecurityManager.runAs(SecurityManager.java)
	at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
	at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
	at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
	at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)

um colega meu aqui conseguiu fazer funcionar o IoC sem problemas, vou pedir pra conferir oq ele fez qnd der um tempo… ai posto aqui oq era.

tiagops

Ressussitando essa thread!

Estou com o mesmo problema do NPE. Na mesma linha
Fiz todos os passos que estao descritos nessa thread. A unica diferenca é que a minha linha

com.opensymphony.webwork.lifecycle.RequestLifecycleFilter

no web.xml dá erro pq pelo que vi nessa versao do WW 2.2.2 não tem mais essa classe…

Alguma dica? Conseguiu resolver o problema do ano passado? hehe
2 dias quebrando a cabeca…
valeu

Criado 31 de maio de 2005
Ultima resposta 28 de jun. de 2006
Respostas 30
Participantes 7