Sitemesh + Mentawai

2 respostas
ranophoenix

Sempre utilizei o Sitemesh com o Spring e lá fazia o seguinte:

spring-servlet.xml

<bean name="/decorator.htm" class="DecoratorController"> <property name="viewName" value="decorators/decorator"/> </bean>

decorators.xml

...
    <decorator name="decorador" page="/decorator.htm">
        <pattern>/</pattern>
        <pattern>/*.htm</pattern>
    </decorator>
...

DecoratorController.java

public class DecoratorController extends ParameterizableViewController {

    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
        return super.handleRequestInternal(request, response);
    }

}

Como ter o mesmo comportamento utilizando o Mentawai!?

2 Respostas

Rubem_Azenha

Estamos criando uma API de Template para o Mentawai. MAs acho que da para usar o Sitemesh, basta configurar ele para pegar a URL da tua Action no Menta, não?

ranophoenix

Veja o que eu posso estar fazendo de errado.

1)Action o Aplicaition Manager:

...
       action("/Layout",DecoratorAction.class)
      .on(SUCCESS, fwd("/WEB-INF/decorators/layout.jsp"));
...
  1. Meu decorators.xml:
...
  <decorator name="principal" page="/Layout.mtw">
    <pattern>/*</pattern>
    <pattern>/*.mtw</pattern>
  </decorator>
...
  1. Erro gerado quando eu chamo qualquer página da aplicação:
08:26:21,296 ERROR  - Servlet.service() for servlet jsp threw exception
javax.servlet.ServletException: Could not find action for actionName: index
        at org.mentawai.core.Controller.service(Controller.java:274)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
        at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
        at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
        at com.opensymphony.module.sitemesh.filter.PageFilter.applyDecorator(PageFilter.java:156)
        at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:59)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.mentawai.util.DebugServletFilter.doFilter(DebugServletFilter.java:70)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)

Se no meu decorators.xml eu tirar o nome da action e apontar para o jsp do template diretamente, tudo funciona normal. Mas quero apontar para action para poder setar alguns parâmetros na requisição.

Onde está o problema!?

Criado 14 de julho de 2006
Ultima resposta 16 de jul. de 2006
Respostas 2
Participantes 2