2016-03-13 11 views
8

の下にindex.htmlが見つかりませんspring.ioから次のドキュメントを読んで、By default Spring Boot will serve static content from a directory called /static (or /public or /resources or /META-INF/resources) in the classpathと言っていましたが、012.htmlファイルを/resourcesの下に置くと、文字列indexがレンダリングされます。現在index.htmlはwebappの下にあり、AngularJSを使用しています。私のIDEコンソールON春のブートでWebアプリケーションフォルダ

directory

MvcConfiguration

@Configuration 
public class MvcConfig { 

    @Bean 
    InternalResourceViewResolver viewResolver(){ 

     InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
     resolver.setPrefix("/webapp/"); 
     resolver.setSuffix(".html"); 

     return resolver; 
    } 

} 

インデックスページのためのRESTfulなサービス

@RestController 
public class IndexController { 

    @RequestMapping("/") 
    public String index(){ 
     System.out.println("Looking in the index controller........."); 
     return "index"; 
    } 

} 

私はLooking in the index controller......は、私はChromeのみ開発ツールでIndexControllerから、ネットワークの下に印刷された見ていますlocalhost 200を参照してください。

index.htmlを

<body> 

    <!--[if lt IE 7]> 
     <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p> 
    <![endif]--> 

    <div ng-view></div> 

    <div>Angular seed app: v<span app-version></span></div> 
+0

ここでは正確に何をしたいですか?インデックスページ( 'ng-app')でアプリを初期化しましたか? –

+0

'src/main/webapp'がすでにクラスパスに入っているので、この' resolver.setPrefix( "/"); 'を試してください。 –

+0

@SanjayRawat、動作しませんでした... – Drew1208

答えて

20

Spring Boot docsも書かれています:

アプリケーションがjarファイルとして をパッケージ化する場合はSRC /メイン/ webappディレクトリを使用しないでください。このディレクトリは共通の標準ですが、 はwarパッケージ化でのみ動作し、jarファイルを生成する場合はほとんどのビルドツールで暗黙のうちに無視されます( )。

春のブートは、あなたがデフォルトに抵抗しようとしていないときには非常に賛成しています。あなたのファイルが/src/main/webappに置かれている理由は何もありません。フロントエンドアセットに/src/main/resources/staticを使用してください。それが最も一般的な場所です。

ルートレベルを作成する必要なしに、これらの静的ファイルをルートURIから自動的に配信します。Controller実際にはIndexControllerは、静的フロントエンドファイルがルートURIから提供されないようにします。静的ファイル用にはControllerを作成する必要はありません。

あなたのアプリではリゾルバを表示する必要はありません。あなたのアプリは、単一ページの角度アプリケーションで消費されるREST APIです。だからあなたのHTMLテンプレートはクライアント上にあります。サーバー側のHTMLテンプレートを実行する場合(ThymeleafやJSPなど)には、リゾルバが必要です。その部分も取り除いてください。

+0

はい、それはjappに入れている場合、インデックスページをwebappsに入れないと言われています。ダミーのindex.htmlファイルを '/ src/main/resources/static'に入れました。' index'という文字列がレンダリングされました。私は '@ Service'から情報を取得しているのでRestAPIが必要です。 – Drew1208

+0

あなたのIndexControllerが "/"にマップされているためです。ルートリソースから静的なHTMLファイルを提供したいときは、 "/"にマップされたコントローラを持つべきではありません。 – luboskrnac

+0

私はコントローラを削除し、それは働いた。ありがとうございます – Drew1208

0
@RestController 
public class IndexController { 

    @RequestMapping("/") 
    public String index(){ 
     System.out.println("Looking in the index controller........."); 
     return "index"; 
    } 

} 

問題は、あなたが書く場合は、このケースではそう@RestControllerを、使用している、ここにある「リターン 『インデックス』;」春のブートは、文字列の答えとしてそれをカバーしています。代わりに@Controllerアノテーションを使用する必要があります。

関連する問題