Richfaces內訂七種skin:
DEFAULT,emeraldTown,wine,japanCherry,ruby,classic,deepMarine.
可以即時變換Richfaces元件的外觀.
透過這兩個簡單的步驟,即可抽換skin
1.Configure your web.xml
context-param
param-name org.ajax4jsf.SKIN /param-name
param-value #{skinBean.skin} /param-value
/context-param
2.使用backing bean從view端接收使用者所選擇的參數,
注意skin的屬性名稱只包含這七種:
DEFAULT,emeraldTown,wine,japanCherry,ruby,classic,deepMarine
以下是實例:
1.SkinBean.java(包含skin屬性以及set和get)
主要是透過此方法取得skin屬性名稱
private String getSkinParam(){
FacesContext fc = FacesContext.getCurrentInstance();
String param = (String) fc.getExternalContext().getRequestParameterMap().get("s");
if (param!=null && param.trim().length()>0) {
return param;
} else {
return null;
}
}
2.skin.xhtml
h:form
h:outputLink blueSky f:param value="blueSky" name="s" /h:outputLink
h:outputLink classic f:param value="classic" name="s" /h:outputLink
/h:form
3.LIVE_DEMO
以下是我目前碰到的狀況:
1.stack overflow
起因:似乎是form過多
解法:在那個頁面不讓使用者選擇skin,而是從別的頁面選擇skin
2.null exception
起因:在request scope的頁面選擇skin,造成原本的bean從component tree已經消失
解法:把scope設定成session(尚未測試)
3.選完skin之後,頁面回到上一頁
起因:如果是以h:outputLink的方式來傳遞參數,會遇到導向的問題
解法:重新導向頁面
2007年3月24日 星期六
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言