2011-03-31 7 views
4

GuiceサーブレットでWicketプロジェクトを設定した後、java.lang.IllegalStateException: filter path was not configuredと表示されます。ただし、フィルタパスに設定されています。何か不足していますか?WiceetでGuiceサーブレットを使用する方法

web.xmlの

<?xml version="1.0" encoding="utf-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
       http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    version="2.5"> 

    <display-name>node-sitter</display-name> 

    <listener> 
     <listener-class>com.mycompany.wicketapp.inject.ServletConfig</listener-class> 
    </listener> 
    <filter> 
     <description>Initialises Guice</description> 
     <filter-name>guiceFilter</filter-name> 
     <filter-class>com.google.inject.servlet.GuiceFilter</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>guiceFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 
</web-app> 

Guiceのサーブレットリスナー:

public class ServletConfig extends GuiceServletContextListener { 

    @Override 
    protected Injector getInjector() { 
     return Guice.createInjector(new Servlets()); 
    } 

    private static class Servlets extends ServletModule { 

     @Override 
     protected void configureServlets() { 
      bind(WicketFilter.class).in(Singleton.class); 
      filterRegex("/.*").through(WicketFilter.class, withApplicationClass(WicketApplication.class)); 
     } 

     private Map<String, String> withApplicationClass(Class<? extends WebApplication> applicationClass) { 
      Map<String, String> initParams = new HashMap<String, String>(1); 
      initParams.put("applicationClassName", applicationClass.getName()); 
      return initParams; 
     } 
    } 
} 

スタックトレース(ページが訪問された場合):

java.lang.IllegalStateException: filter path was not configured 
    at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:124) 
    at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:194) 
    at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) 
    at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) 
    at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) 
    at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323) 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:474) 

答えて

9

Apparently、この問題がで固定することができます。次のinitパラメータをフィルタに追加します。

initParams.put(WicketFilter.FILTER_MAPPING_PARAM, "/*"); 
関連する問題