2017-03-17 26 views
0

新手問題:我今天剛剛啓動RequireJS,我試圖在我的配置文件中將request.getContextPath()設置爲我的baseUrl。如何在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}。在那裏獲得價值的最佳方式是什麼?

感謝您的任何有用的提示。

更新:這似乎是一個春天的映射問題,我現在失去了,因爲我是前端開發人員。我收到的服務器錯誤如下:

WARN: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] in DispatcherServlet with name'myContextPath'

我不認爲我需要在web.xml中添加一個新的servlet映射我寧願不使用window.location或沿着這些行來獲取應用程序上下文。糾正這個問題的最好方法是什麼?

+1

你應該使用在servlet.xml中設置其他靜態文件,使用」app「映射放置靜態文件。 –

回答

0

找到另一個堆棧溢出後使用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', 
    } 
});