2016-03-21 7 views
1

私のVaadin 7アプリに静的ページ(.htmlファイル)を保存するには、Vaadin 7アプリをどのように入手するのですか?私のVaadin 7ウェブアプリ内で静的なウェブページを提供しますか?

シナリオ:時折、静的なWebページのフレッシュバージョンを生成したいとします。たとえば、ユーザーがVaadinアプリにデータを入力すると、そのアプリはreport.htmlファイルに書き込まれた内容のレポートを生成します。このレポートの最初のバージョンは、私のVaadinプロジェクトのWeb Pagesフォルダに、WEB-INFVAADIN、およびMETA-INFというフォルダとともに格納されています。

report.htmlページを表示するにはどうすればよいですか?

私の場合は、開発と運用の両方でWebアプリケーションを実行するためにTomcat 8を使用しています。しかし、確かにそのページを提供するためにTomcat固有ではない方法がなければなりません。

私はBrowserWindowOpenerクラスを使用して2番目のブラウザウィンドウを開く方法を知っています。

Button button = new Button ("Show Report"); 
BrowserWindowOpener browserWindowOpener = new BrowserWindowOpener (new ExternalResource (urlStringGoesHere)); 
browserWindowOpener.extend (button); 

Safariブラウザで私のVaadin NetBeans 8.1から7.6.4のアプリを実行している間は、URLがhttp://localhost:8080/AwesomeApp-ui/です。だから私はハードコーディングを試みたurlStringGoesHerehttp://localhost:8080/AwesomeApp-ui/report.html。しかし、新しいウィンドウは静的なレポートページを表示するのではなく、私のVaadinアプリのUIを表示します。

私のVaadinアプリに静的ページを保存し、ユーザーの要求に応じて表示する適切な方法は何ですか?

答えて

2

Vaadinは、リッスンするように設定したURLでリクエストを処理します。あなたのアプリは、そのWebコンテキスト内のすべてのURLを処理するように設定されているようです。

<servlet-mapping> 
    <servlet-name>Vaadin Application Servlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

(注)パターン/*に一致するすべてのURLへのごvaadinサーブレットをマップパーツ:それはあなたがおそらくこれと同じサーブレット・マッピングがあることを意味します。

新しいサーブレット3.0 APIを使用している場合、サーブレットマッピングをweb.xmlファイルに定義する必要はありません。web.xmlがまったくない場合もあります。その場合、VaadinServletというサブクラスを検索し、そのクラスのアノテーションを調べると、web.xmlのアノテーションを使用して同じメタデータを与えることができます。 VaadinのドキュメントのDeploying an Applicationの章を参照してください。

あなたはこのような何かにVaadinサーブレットのマッピングを変更する場合があります

<servlet-mapping> 
    <servlet-name>Vaadin Application Servlet</servlet-name> 
    <url-pattern>/VAADIN/*</url-pattern> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

は今、キャッチオールURL /*はもはやVaadinサーブレットに割り当てられていないので、あなたは自由です別のサーブレットに割り当てるか、デフォルトのサーブレットが静的なWebリソースフォルダから静的リソースを提供できるようにします。動的リソースの提供を計画している場合は、サーブレットを作成することをお勧めします。

+0

'Web Pages'サブフォルダを使用している場合、URLは' http:// localhost:8080/AwesomeApp-ui/Web%20Pages/report.html'になります。 –

関連する問題