2

EAR としてパッケージ化された JSF 1.2 ベースの Java Web アプリケーションがあります。いくつかの JAR と、Web UI をフロントエンドとして提供する 1 つの WAR が含まれています。WAR には、JSF ページ (XHTML)、CSS ファイル、および画像などのその他の Web リソースが含まれています。使用中のビルドシステムは maven 2 (マルチモジュール プロジェクト) です。

現在の目標は、Web UI のさまざまな「フレーバー」を提供することです。すべてのフレーバーは、異なるスタイル シートと異なる画像を持つことができますが、機能は同じです。

問題は、コードの重複/オーバーヘッドをあまり発生させずにこれを行うにはどうすればよいかということです。いくつかの WAR モジュール (フレーバーごとに 1 つ) と、さまざまな WAR に依存するいくつかの EAR を作成する必要があると思います。これの欠点は、フレーバーごとにすべての構成を備えた 2 つのモジュールを追加する必要があることです。すべての JSF ページを複製する必要がありますが、これは本当に良くありません (別のアーカイブを介して XHTML を提供し、Maven のリモート リソース プラグインを使用してリモート リソースを共有すると、ここで役立つ可能性があります)。

  • 説明されているセットアップは私の問題に対する最善の解決策ですか、それとももっと良い方法がありますか?
  • 実行時にスタイルを変更する方法はありますか? つまり、CSS ファイルと画像を外部リソースとして提供しますか?

前もって感謝します
- マーティン

4

1 に答える 1

0

まず、すべての css をファイルに外部化する必要があります。テーマごとに異なる CSS ページのセットを用意します。アプリにホームページと検索ページの 2 つのページがあり、赤と青の 2 つのテーマが必要な場合は、homeRed.css、searchRed.css、homeBlue.css、searchBlue.css が必要です。

実行時にテーマを切り替えることについて、JSP のような動的 Web ページでは、パラメーター値に応じて Web ページを生成できます。colorStyleがパラメーター名であるとしましょう。JSP のようにすることができます

    <% if(colorStyle.equals("RED")){ %>
       <link rel="stylesheet" href="path/to/homeRed.css">
    <% } else { %>
        <link rel="stylesheet" href="path/to/homeBlue.css">
    <% } %>

要件に応じて、ユーザーからcolorStyleの値を読み取る か、アプリでハードコードすることができます。

上記は、最近では推奨されていない JSP での非常に大雑把な方法ですが、JSF を使用しているため、洗練された方法でこれを行うための準備が必要であることに注意してください。

*編集更新* その場合、やりたいことは2つの方法でしか実行できません。ソースファイルのmaven構成または必要なファイルをwarを作成するフォルダーにコピーするためのスタナロンユーティリティプログラムのいずれか。Maven 構成アプローチの場合、含めるまたは除外するファイルのセットを選択できます。for ref Mavenビルドからソースを(一時的に)除外する「正しい」方法は何ですか?Eclipseから簡単に実行する方法はありますか?

于 2013-09-13T06:06:16.340 に答える