2013-08-02 42 views
1

我使用primeface的UI組件,我必須設置佈局部臨時使用的CSS樣式它做的背景下,如何添加CSS樣式屬性動態地在JSF

.layoutCustomStyle.ui-layout-unit-content 
    { 
    background-image: url('resources/images/backgrnd.png'); 
    } 

的ID該layoutunit的是「layoutId」和所用的styleClass是「layoutCustomStyle」

在XHTML中,

<p:layoutUnit position="top" id= "layoutId" styleClass ="layoutCustomStyle"> 
</p:layoutUnit> 

但我要的是動態地添加背景圖像。圖像將由文件瀏覽器選擇,所以我不能爲此添加單獨的類並使用bean。

UIViewRoot view = FacesContext.getCurrentInstance().getViewRoot(); 
UIComponent comp= view.findComponent("layoutId"); 
Map<String, Object> attrMap = comp.getAttributes(); 
String className = (String)attrMap.get("styleClass"); 

使用此我可以設置和獲取類名,但如何更改屬性「background-image:」動態?

希望這個問題是明確的。任何幫助表示讚賞。

由於提前, 飛馬

+0

動態的意思是什麼事情你想改變背景??你使用任何Bean類?我告訴我,然後我會爲你提供代碼。 –

+0

有一個文件瀏覽器,所選圖像應設置爲背景。是的,我正在使用bean class.I使用primeface fileupload組件來選擇圖像文件。 – user2632444

回答

3

使用style屬性,而不是styleClass

+0

我動態地添加了樣式「background-image:url(」「)」。但是在調用「更新」時,佈局單元消失了(它將一些位置靠近標題佈局單元並隱藏起來)。它的問題與「更新」 – user2632444

+1

只需使用'style =「#{bean.style}」'',而'#{bean}'是一個視圖範圍的bean。手動抓取組件並以編程方式直接操作它們一直是一種可怕的方式。 – BalusC