JSF 帶參數(shù) 頁(yè)面重定向
轉(zhuǎn)載于http://hi.baidu.com/baileyfu/blog/item/373ad8436ea594149313c63b.html
JSF導(dǎo)航帶參數(shù)
2008年04月23日 星期三 下午 05:54
在jsf的配置文件faces-config.xml中,導(dǎo)航通常是導(dǎo)到不能帶參數(shù)的頁(yè)面,這在某些情況會(huì)造成一些浪費(fèi),就是說你不得不寫一些沒有太多用處的頁(yè)面,舉例來說:
<navigation-rule>
<from-view-id>/login.jsp</from-view-id>
<navigation-case>
<from-outcome>succeed</from-outcome>
<to-view-id>/loginsuccess.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>fail</from-outcome>
<to-view-id>/loginfail.jsp</to-view-id>
</navigation-case>
</navigation-rule>
通常在loginfail.jsp中可能并沒有什么實(shí)際的內(nèi)容,只是告訴用戶登錄失敗請(qǐng)重新登錄,當(dāng)然,有人會(huì)說,可以直接把登錄失敗 導(dǎo)航至loginsuccess.jsp上,然后通過<h:message>來顯示失敗信息,這樣有時(shí)候會(huì)造成其他的一些問題。我們可以采取 另外一種方法,讓登錄失敗后返回loginsuccess.jsp時(shí)帶上參數(shù)來標(biāo)明失敗的原因:
首先,在loginBean的驗(yàn)證登錄的方法里,定義:帳戶錯(cuò)誤返回1,驗(yàn)證碼錯(cuò)誤返回2,全部正確返回0,然后通過FacesContext的重定向方法來跳轉(zhuǎn)并帶參數(shù),如下:
LoginBean:
public String login() {
String result = "";
int ret = authenticate(username,pwd,verifyingcode);
if(ret == 0) result = "succeed";
else
{
switch (ret) {
case 1:
result = "login.jsf?result=wrongpwd";break;
case 2:
result = "login.jsf?result=wrongcode";break;
}
try {
FacesContext.getCurrentInstance().getExternalContext().redirect(result);//重定向
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
此時(shí),還要注意faces-config.xml中配置的變化,去掉原來fail的導(dǎo)航,只保留succeed的導(dǎo)航即可。
這樣,在loginsuccess.jsp中就可以獲取result參數(shù)來做一些諸如alert的提示了。
posted on 2008-09-02 15:19 魯勝迪 閱讀(2956) 評(píng)論(1) 編輯 收藏 所屬分類: 問題集