2014-11-10 2 views
2

Вот мой взгляд распознаватель:Spring не перенаправляется на страницу HTML

<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"; 
    } 
} 

Когда я получить доступ к локальному: 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 находятся в этой же папке. Любые идеи, как это исправить?

EDIT:

Для HTML вам не нужно просматривать арбитры. Вместо этого просто создайте папку в папке webapp. Назовите это static, а затем добавьте <mvc:resources mapping="/static/**" location="/static/" /> в свой xml.

В контроллере вместо return "hello"; поставил return "static/hello.html";

+0

См: http://stackoverflow.com/q/16598594/714969 –

+0

Спасибо, Кевин! – Marko

ответ

1

В качестве дополнения к ответам How to map requests to HTML file in Spring MVC?, я бы сказал, что InternalResourceViewResolver знает, как сделать вид на JSP или JSP + JSTL. Разумеется, вы можете использовать HTML-представления, даже если это не имеет смысла (*) - написанием пользовательского ViewResolver, который сможет отображать простые HTML-страницы.

(*) Обычно контроллер подготавливает модель, которая будет использоваться представлением. В простом представлении HTML вы не можете использовать модель. Обычно, когда вы пытаетесь это сделать, вам действительно нужно перенаправить на обычную HTML-страницу, а не использовать ее как представление.

Чтобы перенаправить на страницу HTML, вы поместите ее из папки WEB-INF в место, доступное как ресурс.

Но в вашей конкретной ситуации вы пытаетесь отобразить hello.html для корневого URL. Лучший способ сделать это, чтобы положить его непосредственно в корневую папку веб-приложения ATN объявить его в welcome-file-list в web.xml:

<welcome-file-list> 
    <welcome-file>hello.html</welcome-file> 
</welcome-file-list> 
+0

Спасибо за ваш ответ! – Marko

Смежные вопросы