我无法获得spring mvc来解析.html视图文件.
我有以下视图文件夹结构:
WEB-INF
`-views
|- home.jsp
`- home.html
Run Code Online (Sandbox Code Playgroud)
我有一个简单的hello world控制器方法,它只打印一条消息并返回视图名称"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>
Run Code Online (Sandbox Code Playgroud)
当我点击太空飞船/家庭时,控制器打印出hello world消息,我看到home.jsp视图没有问题.
问题是当我将后缀更改为.html时.
更改后缀并导航到/ home后,控制器打印消息,但是我在浏览器中看到404错误,控制台中出现以下错误:警告:没有找到带URI的HTTP请求的映射[/ spaceships/WEB-INF/views /home.html]
澄清:
<!-- 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" /> …Run Code Online (Sandbox Code Playgroud) 我正在使用angularjs和spring mvc编写一个webapp作为REST服务提供者和一个部分视图提供者(我也使用angular-ui-router,这样我就可以有多个嵌套的部分).我目前对模板语言没有任何用处,因为我计划用角度做所有事情,但是我尝试过的每一个视图解析器都有某种类型的模板语言与angular冲突并且崩溃应用程序和/或填充我的日志有错误.
首先我尝试使用InternalResourceViewResolver,但没有运气,因为它似乎只需要.jsp文件,并且不会显示任何其他内容.
然后我尝试使用Thymeleaf.Thymeleaf遵循XML标准,迫使我重写我的大多数html以遵循xml要求,并且在我完成之后,它在遇到&&ng-show指令内部时死亡.所以也没有运气.
然后我尝试了Velocity.到目前为止,我对速度感到非常幸运.它很好地提供了html文件,在遇到解析错误时不会停止,并允许我以与InternalResourceViewResolver相同的方式提供部分视图.然而,在遇到以$Velocity为前缀的角度变量时,会尝试将它们解析为VTL变量,并使用类似的消息填充我的日志
velocity - Null reference [template 'clients/createOrEdit.html', line 1, column 65] : $invalid cannot be resolved.
一切都在继续,但我不是那个只留下错误的人,而且我发现没有办法禁用VTL.
这是我目前使用视图解析器的经验.
我也有一个想法将.html文件视为静态资源(它们有点像角度之前它的魔力)使用mvc:resources但没有任何视图解析器我的应用程序无法启动,即使我将主layout.html设置为欢迎-file在web.xml中
我的问题是.我应该使用什么作为视图解析器,以便它与angularjs一起使用,如果我甚至应该使用视图解析器?
编辑:我正在尝试使用ContentNegotiatingViewResolver,我得到:
DEBUG ContentNegotiatingViewResolver - Requested media types are [text/html] based on Accept header types and producible media types [*/*])
DEBUG ContentNegotiatingViewResolver - No acceptable view found; returning null
DEBUG DispatcherServlet - Could not complete request
javax.servlet.ServletException: Could not resolve view with name 'layout.html' in servlet with name …Run Code Online (Sandbox Code Playgroud)