2017-08-01 18 views
0

私は春のブートだけを始めました。名前が 'dispatcherServlet'のサーブレットで、名前が 'HelloWorld'のビューを解決できませんでした

htmlページを表示したい。

しかし、動作しません。

HelloWorld.htmlHelloWorld.ftlに変更すると、ftlページを表示できますが、vue.jsは解決されません。

以下は私のSpringブート設定ファイルとコントローラです。

アプリケーション:

spring.resources.chain.strategy.content.enabled=true 
spring.resources.chain.strategy.content.paths=/** 
spring.mvc.view.prefix=/ 
spring.mvc.view.suffix=.html 
spring.mvc.static-path-pattern=/** 

資源:static/js/vue.jstempates/HelloWorld.html

コントローラー:

@Controller 
public class HelloController { 
    @RequestMapping("/hello") 
    public String hello() { 
     return "HelloWorld"; 
    } 
} 

答えて

0

春ブーツ春ブーツの美しさであるプラグアンドプレイ型の施設を提供します。同じことが、スプリングブートを備えたWebアプリケーション内の場所からの静的コンテンツの配信にも当てはまります。

spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/ 

、デフォルトの静的パスのパターンは次のとおりです:

spring.mvc.static-path-pattern=/** 

をしかし、デフォルト以外の提供することをお勧めしますデフォルトでは春のブートは、デフォルトのプロパティとしてクラスパスから静的リソースを提供しています。

ただし、スプリングブートでは、WebMvcConfigurerAdapterを実装することで、プログラムの設定をカスタマイズすることもできます。

@EnableAutoConfiguration 
public class AddCustomLocations { 
    @Bean 
    WebMvcConfigurer configurer() { 
     return new WebMvcConfigurerAdapter() { 
      @Override 
      public void addResourceHandlers (ResourceHandlerRegistry registry) { 
       registry.addResourceHandler("/pages/**"). 
          addResourceLocations("classpath:/my-custom-location/"); 
      } 
     }; 
    } 

    public static void main (String[] args) { 

     SpringApplication app = 
        new SpringApplication(AddCustomLocations.class); 
     app.run(args); 
    } 
} 

は今http://localhost:8080/pages/page1.jsのようなURLパターンが見つからときのようsrc/main/resources/new-custom-location/page1.jsとpage1.jsは静的リソースを務めする新しい静的なコンテンツを追加します。 templates/HelloWorld.htmlのための今

、デフォルトのプロパティの変更が必要とされる(フォルダtemplatesがすでに存在していると仮定し):ディレクトリ/templates/

spring.mvc.view.prefix=/templates/ 
spring.mvc.view.suffix=.html 

対応するHTMLページがviewResolverによってレンダリングされます。

編集回答:

あなたが@EnableWebMvcを使用している場合は、その後、それを削除します。あなたの問題は解決されるはずです。 まだ問題が解決しない場合は、WebMvcConfigurerAdapteraddViewControllers(ViewControllerRegistry registry)メソッドをオーバーライドしてください。 addResourceHandlers (ResourceHandlerRegistry registry)メソッドの後に、上記のコードに以下のコードスニペットを追加してください。

@Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/").setViewName("index"); 
     registry.addViewController("/hello").setViewName("hello"); 
     registry.addViewController("/test").setViewName("testPage"); 
    } 

接頭/templates/とサフィックス.htmlビューリゾルバによって追加されるであろう。

+0

私はjsとcssと画像を解決できますが、私はspringbootとapplictionでhtmlを使用しています。私はindex.htmlを訪問することはできません。 show javax.servlet。ServletException:名前 'dispatcherServletのサーブレットで名前' index 'のビューを解決できませんでした。しかし、私は.htmlをftlに変更します。大丈夫 。なぜあなたが知っているのかを教えてください。ありがとう – Ezreal

+0

@エズリアル、私はFreeMarkerがあなたのクラスパス上に設定されていると思うので、もしあればクラスパスからの依存関係を削除してください。もう一つは、あなたの実際のコードをindex.htmlに提供していないということです。これは私の理解に従ってソリューションを提供していますが、アップデートを提供することができます。私の編集された答えを参照してください。 –

関連する問題