如何将我的src /主/ web应用/ WEB-INF / views文件夹出的src /主/ we

2019-10-29 15:44发布

我有一个文件夹中的Spring MVC src/main/webapp/WEB-INF/views包含我的视图模板。 我想将它移动到src/main/java/views (或外部其他文件夹src/main/webapp )。 如何配置Spring MVC中?

我看到一个文件src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml包含

<beans:property name="prefix" value="/WEB-INF/views/" />

很明显从看那个,我可以把它改成

<beans:property name="prefix" value="/views/" />

这将使我的意见src/main/webapp/views ,但我没有看到任何方式移动views出的src/webapp文件夹中。

换句话说,它是超明确表示, value="/"等同于src/main/webapp/ ,所以它看起来像我仅限于把我的视图文件夹的src / main / webapp的内部。

如何在世界上设置我的视图文件夹是外部src/main/webapp ,例如在src/main/foobar !?! 无论我在谷歌/ Bing搜索我无法找到任何东西。

编辑:我试图使用/../来实现它:

<beans:property name="prefix" value="/../java/edu/csus/csc191/views/" />

但所产生的是说,一个错误

重度:Servlet.service()进行的servlet [appServlet]与路径上下文[/ HP-DSAT]抛出异常[请求处理失败; 嵌套异常是org.thymeleaf.exceptions.TemplateInputException:错误解析模板“v2_upload”,模板可能不存在或者可能不通过任何已配置的模板解析器]与根源是可访问的

上述模板存在中src/main/webapp/../java/views ,相当于src/main/java/views

Answer 1:

通常应用构建于战争的话,将查找在的src / main / webapp的组件,你可以改变这种使用maven定制的项目结构。

如何配置自定义Maven项目结构

这是更好地保持在WEB-INF视分量,因为它是不能公开访问。



Answer 2:

当您使用Thymeleaf这是很容易才达到。 我不知道是否有对JSP类似的解决方案。

所有你需要做的是改变(或增加)的模板解析器。 Thymeleaf目前直接支持ServletContextTemplateResolver和ClassLoaderTemplateResolver(如果我没记错的话也FilepathTemplateResolver)。

所以,你想你的情况是什么在TemplateEngine宣布ClassLoaderTemplateResolver:

<beans:bean id="classLoaderTemplateResolver"
    class="org.thymeleaf.templateresolver.ClassLoaderTemplateResolver">
    <beans:property name="prefix" value="views/" />
    <beans:property name="suffix" value=".html" />
    <beans:property name="templateMode" value="HTML5" />
    <beans:property name="characterEncoding" value="UTF-8" />
    <beans:property name="cacheable" value="${thymeleaf.template.cacheable}" />
    <beans:property name="order" value="0" />
</beans:bean>

<beans:bean class="org.thymeleaf.spring3.dialect.SpringStandardDialect"
    id="thymeleafSpringDialect" />

<beans:bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
    <beans:property name="templateResolvers">
        <beans:set>
            <beans:ref bean="classLoaderTemplateResolver" />
        </beans:set>
    </beans:property>
</beans:bean>


Answer 3:

我想,你不能这样做,因为出WebApp文件夹的方式将意见,你把你的web应用组件进行应用程序的根,因为的src / main / webapp的是你的web应用程序的根。

Web服务器始终部署Web应用程序根目录中唯一的Web应用程序组件。 如果你把意见了Web应用程序,那么Web服务器将无法部署。

让我纠正,如果我错了。



文章来源: How do I move my src/main/webapp/WEB-INF/views folder out of src/main/webapp/?