gpt4 book ai didi

Spring MVC ViewResolver 未映射到 HTML 文件

转载 作者:IT老高 更新时间:2023-10-28 13:52:13 26 4
gpt4 key购买 nike

我无法让 spring mvc 解析 .html View 文件。

我有以下 View 文件夹结构:

WEB-INF
`-views
|- home.jsp
`- home.html

我有一个简单的 hello world Controller 方法,它只打印一条消息并返回 View 名称“home”。我有一个 home.jsp 文件,但想要改为使用 home.html。

<!-- Working servlet mapping --> 
<servlet-mapping>
<servlet-name>spaceShips</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<!-- working servlet context -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>

当我点击 spaceships/home 时, Controller 会打印 hello world 消息,然后我看到home.jsp 查看没有问题。

问题是当我将后缀更改为 .html 时。

更改后缀并导航到/home 后, Controller 会打印消息但是我在浏览器中看到 404 错误,在控制台中看到以下内容:警告:找不到带有 URI [/spaceships/WEB-INF/views/home.html] 的 HTTP 请求的映射

澄清一下:

<!-- not working with .html -->
<servlet-mapping>
<servlet-name>spaceShips</servlet-name>
<!-- I have tried /* here as well without success -->
<url-pattern>/</url-pattern>
</servlet-mapping>

<!-- not working with .html-->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="WEB-INF/views/" />
<beans:property name="suffix" value=".html" />
</beans:bean>

我已经检查了分解的 war 文件夹,并且可以确认两个主文件都存在。

有没有人遇到过这样的事情?

最后一段控制台消息:

INFO: Server startup in 5256 ms
Hello, World!
Jul 27, 2014 12:52:01 PM org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping found for HTTP request with URI [/spaceships/WEB-INF/views/home.html] in DispatcherServlet with name 'spaceShips'

感谢阅读。

=========== 解决方案============

以下(丑陋的)配置解决了这个问题。可能有一些方法可以解决这个问题,但如果您遇到同样的问题,您也许可以从中拼凑出一个解决方案。

文件夹结构:

 WEB-INF
`-static
|-html
`-home.html
|-css
`-img

Controller 方法:

 @RequestMapping(value = "/home")
public String goHome() {
System.out.println("lolololololol");
return "static/html/home";
}

Spring 配置:

 <resources mapping="/static/**" location="/WEB-INF/static/" />

<beans:bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="" />
<beans:property name="suffix" value=".html" />
</beans:bean>

最佳答案

检查一下在 Spring mvc 中映射 html 文件(详细步骤在答案中给出):

Which spring view resolver plays nice with angularjs?

简单来说:

为了在spring中使用静态资源(html,css,img,js),使用如下目录结构:

src/
package/
LayoutController.java
WebContent/
WEB-INF/
static/
html/
layout.html
images/
image.jpg
css/
test.css
js/
main.js
web.xml
springmvc-servlet.xml


@Controller
public class LayoutController {

@RequestMapping("/staticPage")
public String getIndexPage() {
return "layout.htm";

} }




<!-- in spring config file -->
<mvc:resources mapping="/static/**" location="/WEB-INF/static/" />

layout.html

<h1>Page with image</h1>
<img src="/static/img/image.jpg"/>

关于Spring MVC ViewResolver 未映射到 HTML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24980839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com