2017-03-29 42 views
0

我爲我的項目使用了spring,並且我排除了所有模板文件到另一個「html-Project」。我這樣做是因爲我可以在沒有任何重新部署的情況下進行更改,對我而言,其方式更清晰。它工作正常,春季應用程序找到所有模板。但是現在,模板無法找到任何css或js文件。該模板嘗試搜索我的spring-project中的文件,但它們包含在html項目中。我該如何解決它?我需要像我認爲的相對路徑。無法找到帶有排除模板的CSS&JS文件JAVA + Spring

項目

SpringApp
---- LIB
---- SRC
--------主
------------ java
---------------- com.example.test
--------------------控制器
- ----------------------- ShowIndex.java
------------資源
------------ web應用
--------測試

HTML的模板
---- LIB
---- SRC
--------主
------------ java
------------資源
--------- ---模板
---------------- css
-------------------- bootstrap.min.css
---------------- js
-------------------- bootstrap.min.js
--- ------------- images
---------------- index.ftl
------------- index.ftl的--- test.ftl
--------測試

ShowIndex.java

的內容
@RequestMapping(value = "/index", method = RequestMethod.GET) 
public String index(ModelMap model) { 
    model.put("prename", "Hans-Peter"); 

    return "index"; 
} 

HeaderContent

<!-- Bootstrap core CSS --> 
<link rel="stylesheet" href="./css/bootstrap.min.css"> 
<link rel="stylesheet" href="./css/zeus.css"> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
<script src="js/bootstrap.min.js"></script> 

任何想法?

我用:
JAVA
春WebMVC
的Freemarker作爲TemplateEngine

+0

需要看到相關的路徑和目錄結構。請閱讀https://stackoverflow.com/help/how-to-ask並重試。 –

回答

0

把你cssjsimagessrc/main/webapps文件夾,獨立於模板ftl文件。

編輯

使用Servlet 3.0,你有另一種選擇,但也許在所有容器不行...

  1. 創建一個文件夾META-INF/resources
  2. 把所有你的資源js, css, images和等到此文件夾
  3. 和「罐子」吧。

例如我創建了一個assembly.xml文件自動完成這個工作

<assembly> 
    <id>bin</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <dependencySets> 
     <dependencySet> 
      <useProjectArtifact>false</useProjectArtifact> 
      <outputDirectory>/</outputDirectory> 
      <excludes> 
       <exclude>**</exclude> 
      </excludes> 
     </dependencySet> 
    </dependencySets> 
    <fileSets> 
     <fileSet> 
      <directory>target/classes</directory> 
      <outputDirectory>/</outputDirectory> 
      <includes> 
       <include>**/*.class</include> 
      </includes> 
      <excludes> 
       <exclude>**/DefaultController.class</exclude> 
      </excludes> 
     </fileSet> 
     <fileSet> 
      <directory>WebContent</directory> 
      <outputDirectory>META-INF/resources</outputDirectory> 
      <includes> 
       <include>/WEB-INF/jsp/**</include> 
      </includes> 
     </fileSet> 

     <fileSet> 
      <directory>WebContent</directory> 
      <outputDirectory>META-INF/resources</outputDirectory> 
      <includes> 
       <include>js/**</include> 
       <include>plugins/**</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

時使用Maven構建mvn package此文件的工作。

PS

在行家pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    ... 

    <build> 
     ... 

     <plugins> 
      ... 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <descriptors> 
         <descriptor>assembly.xml</descriptor> 
        </descriptors> 
       </configuration> 
       <executions> 
        <execution> 
         <id>make-assembly</id> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

     </plugins> 
    </build> 
    ... 

</project> 
+0

我的模板不在同一個項目中。如果我將css和js文件粘貼到我的spring項目中,我必須部署所有css/js更改。我認爲你的答案會正常工作,但它不是一個真正的解決方案=/ –

+0

但它仍然是我想的一樣。我必須重新部署我的CSS更改嗎? –

+0

您的'abc.jar:/ META_INFO/resources/xyz.css'中的資源可以直接被用戶訪問,例如, 'http:// example.com/xyz.css',你不需要拉出並粘貼到你的webapp文件夾。 –