1

RESTFul URL を使用して Spring MVC アプリケーションを開発しています。静的リソース パスの解決に問題があります。

私はjspページに次のように記述された静的リソースを持っています:

<link type="text/css" rel="stylesheet" href="resources/css/960_16_col.css">

そのため、Tomcat 7 でページをレンダリングすると、次のエラーが表示されます。

URI [/mycoolapp/instances/demo/resources/css/960_16_col.css] の HTTP 要求のマッピングが見つかりません

私の servlet-context.xml には次のものがあります。

<annotation-driven />
<resources mapping="/resources/**" location="/resources/" />

私のweb.xmlは次のとおりです。

<servlet>
    <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
            </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

そして最後に、私のコントローラーは次のとおりです。

@RequestMapping(value = "/instances/{proj}/{type}", method = RequestMethod.GET)
public ModelAndView instances(Locale locale, Model model,
        @PathVariable("proj") String project,
        @PathVariable("type") String type) {
    . . .
}

安らかなURLなしで作業すると、すべてが機能します。グーグルとスタッキングの後、静的リソースの絶対パスを使用して解決策を見つけました:

<link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/resources/css/960_16_col.css"> 

このスタック オーバーフローの質問に書かれているとおりですが、回避策のようです。

静的 URL を解決して相対関係を維持するエレガントな方法はありますか?

4

2 に答える 2

2

タグを使用してみてください<spring:url />。デフォルトでは、コンテキストルートがURLに追加されます。

<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<link type="text/css" rel="stylesheet" href='<spring:url value="/resources/css/960_16_col.css" htmlEscape="true"/>'/>

http://static.springsource.org/spring/docs/current/spring-framework-reference/html/spring.tld.html

于 2012-11-28T11:52:35.360 に答える
0

タグライブラリをインポート

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

次にurlタグを使用します:

<c:url var="myCss" value="/resources/css/960_16_col.css"/>
<link type="text/css" rel="stylesheet" href="${myCss}"/>

または変数を作成せずに:

 <link type="text/css" rel="stylesheet" href="<c:url value='/resources/css/960_16_col.css'/>" />
于 2012-11-28T11:26:49.077 に答える