2011-10-31 31 views
0

在新作業中執行RichFaces/jsf項目並沒有太長時間。JSF/Rich Faces中的選項元素

主頁面有一個包含框架集的xhtml頁面。在一個理想的世界裏,它不會有,但它需要保持這種方式,但是當你以特定級別的用戶登錄時,不使用邊框。

<frameset cols="#{Base.sideBars['left'].width},*,#{Base.sideBars['right'].width}" id="contentframes" > 
<frame name="left" src="left.jsf" id="leftframe"/> 
<frame name="center" src="center.jsf" id="centerframe" /> 
<frame name="right" src="right.jsf" id="rightframe" /> 
</frameset> 

是有變化的,這樣我只包括中央車架的「本土」的方式,或者是它只是更容易將其更改爲一個jsp,把一個if/else語句圍繞它?

我需要的是結果HTML是這樣的:

<frameset cols="20,*,20" id="contentframes" > 
<frame name="left" src="left.jsf" id="leftframe"/> 
<frame name="center" src="center.jsf" id="centerframe" /> 
<frame name="right" src="right.jsf" id="rightframe" /> 
</frameset> 

當您登錄爲一個用戶,但如果在其他用戶登錄時,你只包括了在centerframe.jsf元素根本沒有任何框架。

回答

1

否則會更好。或者甚至你可以通過管理它

<frame name="center" src="#{someBean.centerPage}.jsf" id="centerframe" /> 
+0

不知道你的意思 - 那仍然是一個框架,我需要擺脫框架。我已經修改了這個問題,如果不清楚 – Woody

+0

以及我回答的是你想要動態插入幀,因爲有兩種方法,如果.. else有條件地插入或使用bean的值來評估目標頁面 –

+0

對不起因爲我缺乏清晰度,現在已經表示讚賞。如果其他用戶登錄,我想沒有框架(或者我猜可能是一個框架集)。我需要殺死左右框架。 – Woody

1

當你已經使用服務器端視圖技術時,客戶端包括像框架集並不是非常有用。它們不僅對用戶體驗和搜索引擎優化不利,而且還允許服務器端進行細粒度的控制。你應該改用服務器端包含。在JSF中,您可以使用rendered屬性來有條件地顯示內容。

<h:panelGroup id="left" layout="block" rendered="#{user.hasRole('ADMIN')}"> 
    <ui:include src="left.xhtml" /> 
</h:panelGroup> 
<h:panelGroup id="center" layout="block"> 
    <ui:include src="center.xhtml" /> 
</h:panelGroup> 
<h:panelGroup id="right" layout="block" rendered="#{user.hasRole('ADMIN')}"> 
    <ui:include src="right.xhtml" /> 
</h:panelGroup> 

,這會使得當用戶的作用 「ADMIN」 的方法如下:

<div id="left"> 
    left.xhtml content 
</div> 
<div id="center"> 
    center.xhtml content 
</div> 
<div id="right"> 
    right.xhtml content 
</div> 

,並按如下,如果用戶不具有作用 「ADMIN」:

<div id="center"> 
    center.xhtml content 
</div> 

您可以使用CSS定位和浮動<div>元素。

+0

正如我在問題中所說,它有框架,它需要保持這種方式。我意識到它不是理想的用戶體驗(搜索引擎優化並不重要),這就是爲什麼我說我希望它沒有!然而,有用的信息,所以我會標記它 – Woody