我正在构建一个包含大约10个屏幕的webflow应用程序。我的流定义文件定义了所有视图状态之间的流,其中每个视图状态由.jsp视图文件表示。
我现在想介绍白色标记应用程序的概念 - 能够呈现相同的流程,但具有不同的“皮肤”或视图文件,具体取决于模型属性 - $ {brand}。
我认为我不能单独用css做这件事。品牌之间的html标记会有很大不同,有些字段会显示不同的文字等(例如,品牌X可能会说'你的名字是什么',品牌Y可能会说'请输入你的名字')。< / p>
我可以在每个jsp文件中加入一些逻辑来在适当的位置显示不同的标记和文本,但是这感觉很麻烦,我想我最终会得到一个巨大的if / else,每个品牌的标记都是在相关的if / else主体中。
我可以使用视图jsp来“决定”显示哪个jsp。像这样:
<view-state id="AboutYou" view="common/AboutYou" />
然后共同/ 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文件,其中'common'.jsp文件的唯一工作是决定显示哪个品牌.jsp
另一种方法是复制我的所有视图状态,然后在我的流定义文件中加载一大堆决策状态。但这看起来非常混乱,并且会产生大量膨胀的流量def文件。
所以我想知道是否还有其他/更好/更聪明的方法。也许能够在流程定义文件中使用EL。像这样:
<view-state id="AboutYou" view="brand${brand}/AboutYou" />
这会有用吗?或者这是另一种方法吗?
干杯,
森
答案 0 :(得分:0)
我找到了答案 - 你可以用#而不是$来访问模型。不确定区别是什么,但是这样可行:
<view-state id="AboutYou" view="brand#{brand}/AboutYou" />
这导致它使用名为brandX / AboutYou.jsp
的视图文件快乐的日子:)