[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 

Forum Read-Only! Check the new site and forum here!

[2.0.0] - baixo - ListManager não carrega Listas Estáticas quando usamos Spring  XML
Forum Index -> Bugs
Author Message
euclydesmelo


[Avatar]

Joined: 29/03/2011 20:14:41
Messages: 4
Offline

Pessoal,

Observei que quando usamos o Spring (seja qual for a motivação, JTA no meu caso) e optamos por extender BaseAction nas nossas actions, o mentawai não consegue mais inicializar as Listas Estáticas.

Isso ocorre por conta do Spring, no startup da aplicação, varrer o classpath em busca de classes anotadas com @Controller, @Service, @Repository, @Component etc. Nesse momento, se temos actions anotadas com @Controller, por exemplo, e que extendam BaseAction, as classes referentes a essas actions, a própria classe de BaseAction, bem como as classes de seus import's serão carregadas.

Como BaseAction utiliza org.mentawai.i18n.LocaleManager e este, por sua vez, faz uso de org.mentawai.list.ListManager, nesse momento seus atributos estáticos serão inicializados. O problema:
Code:
private static final String FULLDIR = ApplicationManager.getRealPath();

Nesse momento, realPath ainda não foi setado no ApplicationManager pelo FrontController do menta. Então, o ListManager quando é inicializado Code:
ListManager.init()
não encontra o diretório /lists (default). Retornado, portanto, sem fazer nada.
Code:
 File root = new File(FULLDIR + SEP + listDir);
 if (!root.exists()) return;

Por conseguinte, quando precisamos usar uma lista, um NullPointException é lançado. Por exemplo, quando tentamos popular um radio:
Code:
<mtw:radiobuttons name="dias" list="dias"/>

A seguinte stacktrace é lançada:
Code:
 GRAVE: Servlet.service() for servlet jsp threw exception
 java.lang.NullPointerException
 	at org.mentawai.tag.html.ListRadio.getStringToPrint(ListRadio.java:85)
 	at org.mentawai.tag.util.PrintTag.doEndTag(PrintTag.java:277)
 	at org.apache.jsp.index_jsp._jspx_meth_mtw_005fradiobuttons_005f0(index_jsp.java:132)
 	at org.apache.jsp.index_jsp._jspService(index_jsp.java:80)
 	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
 	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
 	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 	at org.mentawai.util.DebugServletFilter.doFilter(DebugServletFilter.java:71)
 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
 	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
 	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
 	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
 	at org.mentawai.core.Forward.forward(Forward.java:133)
 	at org.mentawai.core.Forward.execute(Forward.java:116)
 	at org.mentawai.core.Controller.service(Controller.java:736)
 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
 	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
 	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
 	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
 	at org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:706)
 	at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:677)
 	at org.apache.jsp.default_jsp._jspService(default_jsp.java:54)
 	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
 	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
 	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 	at org.mentawai.util.DebugServletFilter.doFilter(DebugServletFilter.java:71)
 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
 	at java.lang.Thread.run(Thread.java:662)

Talvez seria intessante testarmos, no método ListManager.init(), se FULLDIR é null.
Code:
 if (FULLDIR == null) FULLDIR = ApplicationManager.getRealPath();
 
 File root = new File(FULLDIR + SEP + listDir);
 
 if (!root.exists()) return;

-----

Att,

<strong>Euclydes Melo

MuLeK DoIdO</strong>
[Email]
 
Forum Index -> Bugs
Go to:   
Powered by JForum 2.1.6 © JForum Team