将Spring MVC视图放在WEB-INF外部

时间:2016-05-19 14:35:56

标签: java spring maven jsp spring-mvc

我有一个像这样的文件夹结构:

{
    url: "/api/Flight/SearchFlight",
    type: "Post",
    data: $('form').serialize() + '&' + $.param({ 'TokenId': $("#pageInitCounter").val()}, true),
    success: function (data) {
        alert(data);
        var items = [];
        $.each(data.Response.Results, function (key, val) {
            items.push(key + ' : ' + val + '</br>');
        });
    }
}; 

我想将blog.jsp从project/src/main/ java/apps/ blog/ controllers/ blogController.java models/ post.java views/ webapp/WEB-INF/views/ blog/ blog.jsp 目录移动到WEB-INF/views目录,以便更轻松地将代码从一个Spring MVC应用程序移植到另一个Spring MVC应用程序。

我试图创建自己的视图解析器,但解析器似乎只解析到apps/blog/views/目录中的路径。

我以为我可以使用maven将masp收集到maven目标上的webapp但是我似乎无法找到明确的说明来获取相关应用名称下的views文件夹中的视图/WEB-INF/views/blog/

是否可以进行此类设置或是否有更好的方法来实现此目的?

1 个答案:

答案 0 :(得分:0)

根据您的描述(以及默认的maven行为),webapp的内容实际上位于构建的WAR的根目录中。所以你想要的任何观点至少应该在那里。你可以让maven自定义/ src / main / webapp的路径,如果这就是你要找的东西。

至于WAR中视图的位置,我也不喜欢WEB-INF中的视图。我执行以下操作(请注意,视图解析器有许多变体......)

    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    viewResolver.setPrefix("/views/");
    viewResolver.setSuffix(".jsp");
    viewResolver.setExposeContextBeansAsAttributes(true);
    return viewResolver;

上面的代码允许我有/src/main/webapp/views/blogs/blog.jsp之类的视图,并通过字符串"blogs/blog"

引用它