2012-08-30 60 views
0

我正在構建一個包含約10個屏幕的webflow應用程序。我的流定義文件定義了所有視圖狀態之間的流,其中每個視圖狀態由.jsp視圖文件表示。Webflow - 根據模型數據顯示不同的視圖

我現在想介紹白色標記應用程序的概念 - 根據模型屬性 - {{brand}),能夠呈現相同的流,但具有不同的「外觀」或視圖文件。

我不認爲我可以單獨使用CSS做到這一點。品牌之間的html標記將會非常不同,並且一些字段將會以不同的文本顯示(例如,品牌X可能會說'你的名字是什麼',品牌Y可能會說'請輸入你的名字')。

我可以在每個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

我發現這個問題的答案 - 你可以用#訪問模式,而不是$不知道有什麼區別,但這個工程:

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

這導致它使用一個名爲brandX/AboutYou.jsp

快樂的日子一個視圖文件:

相關問題