Tôi không thể nhận được mvc mùa xuân để giải quyết tệp xem .html.Spring MVC ViewResolver không ánh xạ tới các tệp HTML
tôi có cấu trúc xem thư mục sau:
WEB-INF
`-views
|- home.jsp
`- home.html
Tôi có một phương pháp điều khiển hello world đơn giản rằng chỉ cần in một thông điệp và trả về tên xem "nhà". Tôi có một tệp home.jsp nhưng thay vào đó, hãy muốn sử dụng 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>
Khi tôi nhấn con tàu vũ trụ/home bộ điều khiển in thông điệp trên thế giới chào và tôi thấy quan điểm home.jsp mà không có một vấn đề.
Vấn đề là khi tôi thay đổi hậu tố thành .html.
Sau khi thay đổi hậu tố và điều hướng đến/home, bộ điều khiển in thông điệp tuy nhiên tôi thấy một lỗi 404 trong trình duyệt và sau trong giao diện điều khiển: CẢNH BÁO: Không có ánh xạ tìm thấy cho yêu cầu HTTP URI [/ tàu vũ trụ /WEB-INF/views/home.html]
Để làm rõ:
<!-- 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>
tôi đã kiểm tra trong thư mục chiến tranh bùng nổ và có thể khẳng định rằng cả hai file nhà có mặt.
Có ai gặp phải điều gì đó như thế này trước đây không?
đoạn cuối của thông điệp giao diện điều khiển:
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'
Cảm ơn bạn đã đọc.
=========== SOLUTION ============
Sau đây (xấu xí) cấu hình giải quyết vấn đề này. Có lẽ có nhiều cách để làm sạch điều này, nhưng nếu bạn đang gặp vấn đề tương tự, bạn có thể kết hợp với nhau một giải pháp từ việc này.
cấu trúcFolder:
WEB-INF
`-static
|-html
`-home.html
|-css
`-img
điều khiển phương pháp:
@RequestMapping(value = "/home")
public String goHome() {
System.out.println("lolololololol");
return "static/html/home";
}
mùa xuân config:
<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>
Trong điều khiển của bạn, các @Path có thể phải có phần mở rộng .html. –
Tôi có cùng một vấn đề nhưng thay vì lỗi 404 tôi nhận được 405. Vấn đề theo những gì tôi hiểu là xử lý tài nguyên chỉ chấp nhận yêu cầu GET vì vậy khi tôi chuyển hướng đến index.html sau khi đăng biểu mẫu có yêu cầu POST và chuyển hướng đến chỉ mục .html nếu người dùng được đăng ký! – Adelin
Cảm ơn bạn đã đăng giải pháp. Các chủ đề khác thiếu sự kết hợp quyền của ánh xạ tài nguyên và InternalResourceViewResolver. –