如何在RequireJS配置中将request.getContextPath()定义为baseUrl?

时间:2017-03-17 17:30:12

标签: javascript java spring jsp requirejs

新手问题:我今天刚刚启动了RequireJS,我正在尝试将request.getContextPath()设置为我的配置文件中的baseUrl。

我正在使用JSP。在每个JSP页面上,我在头部导入scripts.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<%String context = request.getContextPath();%> // i.e. /www.myUrl.com/myContextPath

<c:set var="context" value="<%=context %>"/>

<script data-main="${context}/js/config" src="${context}/js/require.js"></script>
<script>
require(['config'], function(){
    // all dependencies have loaded
})

在config.js里面我有这个:

requirejs.config({
baseUrl: 'libs',
paths:{
    jquery:'jquery-2.2.4/jquery-2.2.4.min',
    bootstrap:'bootstrap-3.3.7/js/bootstrap.min',
    dataTables: 'datatables.min'
    }
});

问题是它试图加载库并且没有我的上下文路径所以它会尝试这样的事情:

www.myUrl.com/NOTmyContextPath/libs/jqueryLib

我需要在baseUrl中获取$ {context}。在那里获得这个价值的最佳方法是什么?

感谢任何有用的提示。

更新:这似乎是一个Spring映射问题,我现在迷失了,因为我是一名前端开发人员。我收到的服务器错误如下:

警告:2017-03-17 16:08:04:636 org.springframework.web.servlet.PageNotFound找不到带有URI的HTTP请求的映射[/ myContextPath / app / dir / js / myFolder / libs / jquery- 2.2.4 / jquery-2.2.4.min]在DispatcherServlet中,名称为“myContextPath”

我认为我不需要在web.xml中添加新的servlet映射,我宁愿不使用window.location或其他东西来获取应用程序上下文。什么是纠正这种情况的最佳方法?

1 个答案:

答案 0 :(得分:0)

在另一个Stack溢出帖子上使用JS找到答案:

function getContextPath() {
   return window.location.pathname.substring(0, window.location.pathname.indexOf("/",2));
}

requirejs.config({
    baseUrl: getContextPath() + '/js/ops/libs',
    paths:{
        jquery:'jQuery-2.2.4/jquery-2.2.4.min',
        bootstrap:'Bootstrap-3.3.7/js/bootstrap.min',
        dataTables: 'datatables.min',
    }
});