【发布时间】:2014-03-31 19:59:45
【问题描述】:
我在 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!?!无论我在 Google/Bing 上搜索什么,我都找不到任何东西。
编辑:我尝试使用/../ 来实现它:
<beans:property name="prefix" value="/../java/edu/csus/csc191/views/" />
但这会导致错误提示
严重:Servlet.service() for servlet [appServlet] 在上下文中 路径 [/hp-dsat] 抛出异常 [请求处理失败;嵌套的 异常是 org.thymeleaf.exceptions.TemplateInputException:错误 解析模板“v2_upload”,模板可能不存在或可能不存在 可以通过任何已配置的模板解析器访问] 原因
上述模板确实存在于src/main/webapp/../java/views,相当于src/main/java/views
【问题讨论】:
-
你为什么想要/需要?您呈现的视图或视图模板等资源属于已部署 Web 应用程序的 webapp 目录。此外,根据您的模板引擎加载模板文件的方式,webapp/WEB-INF 之外的内容可能无法通过类路径访问
-
为什么模板“属于已部署的 Web 应用的 webapp 目录”?为了简单起见,我希望我的
controllers、models和views目录都在同一个位置。框架不应该让这件事变得困难(这是我第一次使用 Spring)。 -
严格来说,没有什么说他们需要加入
webapp(据我所知)。由 Servlet 规范支持的约定说它们确实应该如此。请参阅此答案:stackoverflow.com/questions/19786142/…。虽然我想不出任何真正阻止您这样做的原因,但我不知道有多少人会为了方便而建议这样做。此外,根据您放置它们的位置,您可能必须修改容器的classpath才能读取它们。 IMO,所有的麻烦都超过了它的价值。
标签: spring maven spring-mvc spring-tool-suite