【发布时间】:2010-06-04 20:10:36
【问题描述】:
我想使用 Spring-Tiles 集成。 Here你可以看到我的应用是什么样子的。
所以我的问题是:为什么 Spring-MVC 调度程序 Servlet 无法解析我的目标页面???
【问题讨论】:
标签: spring spring-mvc mapping tiles tiles2
我想使用 Spring-Tiles 集成。 Here你可以看到我的应用是什么样子的。
所以我的问题是:为什么 Spring-MVC 调度程序 Servlet 无法解析我的目标页面???
【问题讨论】:
标签: spring spring-mvc mapping tiles tiles2
问题是你在servlet映射中使用<url-pattern>/*</url-pattern>,所以所有请求都由DispatcherServlet处理,包括对*.jsptiles的请求。解决它的最通用方法(但要保持不带前缀的宁静 url)是use a UrlRewriteFilter。
【讨论】:
我认为您缺少关键的 ViewResolver。我查看了您在 SpringSource 中提到的帖子,但没有看到以下 ViewResolver:
org.springframework.web.servlet.view.tiles2.TilesViewResolver
尝试添加 ViewResolver 看看是否有帮助。我也使用 Spring 和 Tiles。我只需要声明它和 TilesConfigurer。
查看这些参考资料:
【讨论】:
这是使用 Spring 的一个常见问题,这是因为视图 (jsp) 通过 DispatcherServlet。
尝试使用
修改您的 web.xml <servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
然后添加到您的 urlrewrite.xml 中:
<urlrewrite default-match-type="wildcard">
<rule>
<from>/</from>
<to>/app/</to>
</rule>
<rule>
<from>/**</from>
<to>/app/$1</to>
</rule>
<outbound-rule>
<from>/app/**</from>
<to>/$1</to>
</outbound-rule>
我假设您正在使用 urlrewrite,如果您没有导入 jar 并在 web.xml 中添加过滤器映射,例如:
<filter>
<filter-name>urlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>urlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
【讨论】: