0

約10画面で構成されるWebflowアプリを構築しています。私のフロー定義ファイルは、すべてのビューステート間のフローを定義します。ここで、各ビューステートは .jsp ビュー ファイルによって表されます。

ここで、アプリケーションのホワイト ラベル付けの概念を紹介したいと思います。つまり、同じフローを提示できますが、モデル プロパティ (${brand}) に応じて、異なる「スキン」またはビュー ファイルを使用できます。

cssだけでは無理だと思います。ブランド間の html マークアップは非常に異なり、いくつかのフィールドは異なるテキストなどで表示されます (つまり、ブランド X は「あなたの名前は何ですか」と言うかもしれませんし、ブランド Y は「あなたの名前を入力してください」と言うかもしれません)。

各 jsp ファイルに大量のロジックを配置して、必要に応じてさまざまなマークアップとテキストを表示することもできますが、これは面倒です。各ブランドのマークアップが関連する 1 つの巨大な if/else になってしまうと思います。 if/else 本体。

ビュー jsp を使用して、どの jsp を表示するかを「決定」できます。このようなもの:

<view-state id="AboutYou" view="common/AboutYou" />

次に、common/AboutYou.jsp で、次のようにします。

<c:chooose>
    <c:when test="${brand == 'X'}>
        <jsp:include page="brandX/AboutYou.jsp" />
    </c:when>
    <c:when test="${brand == 'Y'}>
        <jsp:include page="brandY/AboutYou.jsp" />
    </c:when>
</c:choose>

これが機能していることはわかりますが、どれほど効率的かはわかりません.10 個の追加の .jsp ファイルがあり、「共通」.jsp ファイルの唯一の仕事は、どのブランドの .jsp を表示するかを決定することです。

もう 1 つの方法は、すべてのビューステートを複製してから、フロー定義ファイルに大量の決定ステートを入れることです。しかし、これは非常に厄介なようで、フロー定義ファイルが非常に肥大化します。

だから、これを行うための別の/より良い/よりスマートな方法があるかどうか疑問に思っていました. おそらく、フロー定義ファイルでELを使用できるようになるでしょう。このようなもの:

<view-state id="AboutYou" view="brand${brand}/AboutYou" />

これは機能しますか?または、これはこれにアプローチする別の方法ですか?

乾杯、

ネイサン

4

1 に答える 1

0

私はこれに対する答えを見つけました - $ ではなく # でモデルにアクセスできます 違いはわかりませんが、これは機能します:

<view-state id="AboutYou" view="brand#{brand}/AboutYou" />

これにより、brandX/AboutYou.jsp というビュー ファイルが使用されます。

幸せな日々 :)

于 2012-09-03T10:32:34.913 に答える