Tiles 2 且未找到带有 URI 的 HTTP 请求的映射 - Spring-MVC

发布于 2024-09-04 11:08:09 字数 198 浏览 14 评论 0原文

我想使用 Spring-Tiles 集成。 在这里您可以看到我的应用程序的外观。

所以我的问题是:为什么 Spring-MVC 调度程序 Servlet 无法解析我的目标页面???

I want to use Spring-Tiles intergration. Here you can see how my app looks like.

So my question is: why Spring-MVC dispatcher Servlet can not resolve my Target page ???

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

内心旳酸楚 2024-09-11 11:08:09

问题是您在servlet映射中使用/*,因此所有请求都由DispatcherServlet处理,包括对*.jsp 图块。解决这个问题的最通用的方法(但要保持没有前缀的静态 URL)是 使用 UrlRewriteFilter

The problem is that you use <url-pattern>/*</url-pattern> in servlet mapping, so all requests are processed by DispatcherServlet, including request to *.jsp tiles. The most versatile way to solve it (but to keep restful urls without prefixes) is to use a UrlRewriteFilter.

飘然心甜 2024-09-11 11:08:09

我认为你缺少一个关键的 ViewResolver。我检查了您在 SpringSource 中提到的帖子,但我没有看到以下 ViewResolver:

org.springframework.web.servlet.view.tiles2.TilesViewResolver

尝试添加该 ViewResolver 并查看是否有帮助。我也使用 Spring 和 Tiles。我只需要声明它和 TilesConfigurer。

查看这些参考资料:

I think you're missing a critical ViewResolver. I checked the post you mentioned in SpringSource but I didn't see the following ViewResolver:

org.springframework.web.servlet.view.tiles2.TilesViewResolver

Try adding that ViewResolver and see if that would help. I use Spring and Tiles as well. I just have to declare that and the TilesConfigurer.

Check out these references:

乱了心跳 2024-09-11 11:08:09

这是使用 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> 

It's a common issue using Spring and it's due to the fact that the view (jsp) goes through the DispatcherServlet.

Try to modify your web.xml using

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

and then add to your urlrewrite.xml something like:

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

I'm assuming you're using urlrewrite, if you're not import the jar and add the filter mapping in your web.xml such as:

<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> 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文