Webflow - 根据模型数据显示不同的视图

时间:2012-08-30 20:47:11

标签: jsp viewstate spring-webflow-2

我正在构建一个包含大约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" />

这会有用吗?或者这是另一种方法吗?

干杯,

1 个答案:

答案 0 :(得分:0)

我找到了答案 - 你可以用#而不是$来访问模型。不确定区别是什么,但是这样可行:

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

这导致它使用名为brandX / AboutYou.jsp

的视图文件

快乐的日子:)