JSF 带参数 页面重定向

转载于http://hi.baidu.com/baileyfu/blog/item/373ad8436ea594149313c63b.html

JSF导航带参数
2008年04月23日 星期三 下午 05:54
在jsf的配置文件faces-config.xml中,导航通常是导到不能带参数的页面,这在某些情况会造成一些浪费,就是说你不得不写一些没有太多用处的页面,举例来说:

<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中可能并没有什么实际的内容,只是告诉用户登录失败请重新登录,当然,有人会说,可以直接把登录失败 导航至loginsuccess.jsp上,然后通过<h:message>来显示失败信息,这样有时候会造成其他的一些问题。我们可以采取 另外一种方法,让登录失败后返回loginsuccess.jsp时带上参数来标明失败的原因:

首先,在loginBean的验证登录的方法里,定义:帐户错误返回1,验证码错误返回2,全部正确返回0,然后通过FacesContext的重定向方法来跳转并带参数,如下:

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;

}

此时,还要注意faces-config.xml中配置的变化,去掉原来fail的导航,只保留succeed的导航即可。

这样,在loginsuccess.jsp中就可以获取result参数来做一些诸如alert的提示了。



posted on 2008-09-02 15:19 鲁胜迪 阅读(2927) 评论(1)  编辑  收藏 所属分类: 问题集

评论

# re: JSF 带参数 页面重定向 2015-09-07 20:39 阿萨

谢谢啊是到底  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿(4)

随笔分类

随笔档案

文章分类

新闻分类

搜索

最新评论

阅读排行榜

评论排行榜