Spring没有重定向到html页面

时间:2014-11-10 16:54:56

标签: spring spring-mvc

这是我的解析器解析器:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/pages/"/>
    <property name="suffix" value=".html"/>
</bean>

我还有一个应该返回hello.html的控制器:

@Controller
@RequestMapping("/")
public class IndexController {

    @RequestMapping(method = RequestMethod.GET)
    public String getHtmlPage() {
        return "hello";
    }
}

当我访问localhost:8080时,收到错误消息:

WARNING: No mapping found for HTTP request with URI [/WEB-INF/pages/hello.html] in DispatcherServlet with name 'mvc-dispatcher'

现在,当我将后缀值更改为.jsp时,会正确返回hello.jsp。

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/pages/"/>
    <property name="suffix" value=".jsp"/>
</bean>

hello.jsp和hello.html在同一个文件夹中。任何想法如何解决这个问题?

修改

对于HTML,您不需要查看解析器。而只是在webapp文件夹中创建一个文件夹。 例如,将其称为static,然后将<mvc:resources mapping="/static/**" location="/static/" />添加到您的xml。

在控制器中而不是return "hello";放置return "static/hello.html";

1 个答案:

答案 0 :(得分:1)

作为How to map requests to HTML file in Spring MVC?答案的补充,我会说InternalResourceViewResolver知道如何呈现JSP或JSP + JSTL视图。你当然可以使用HTML视图 - 即使它没有意义(*) - 通过编写一个能够呈现纯HTML页面的自定义ViewResolver。

(*)通常,控制器准备将由视图使用的模型。在纯HTML视图中,您无法使用该模型。通常,当您尝试这样做时,您实际上需要重定向到纯HTML页面,而不是像视图一样使用它。

要重定向到HTML页面,请将其从WEB-INF文件夹中放在可作为资源访问的位置。

但是根据您的特殊需要,您尝试为根URL显示hello.html。最好的方法是将它直接放在Web应用程序文件夹的根目录下,然后在welcome-file-list的{​​{1}}中声明它:

web.xml