0

我正在构建一个包含大约 10 个屏幕的 webflow 应用程序。我的流程定义文件定义了所有视图状态之间的流程,其中每个视图状态都由一个 .jsp 视图文件表示。

我现在想介绍应用程序白标的概念——能够呈现相同的流程,但使用不同的“皮肤”或视图文件,具体取决于模型属性——${brand}。

我不认为我可以单独使用 css 做到这一点。品牌之间的 html 标记将非常不同,并且某些字段将显示不同的文本等(即,品牌 X 可能会说“您的名字是什么”,品牌 Y 可能会说“请输入您的名字”)。

我可以在每个 jsp 文件中放入大量逻辑以在适当的情况下呈现不同的标记和文本,但这感觉很混乱,我想我最终会得到一个巨大的 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。

另一种方法是复制我的所有视图状态,然后在我的流定义文件中放入大量决策状态。但这看起来真的很混乱,并且会导致大量臃肿的流 def 文件。

所以我想知道是否有另一种/更好/更智能的方式来做到这一点。也许能够在流定义文件中使用 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 回答