论坛首页 Java企业应用论坛

JSF RI中实现Seam版的导航处理

浏览 2524 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-11-19  

        用过seam的人都知道seam中支持action如果返回形如‘/xxx.xhtml’的导航字符串的时候会直接转到这个页面,而不管faces-config.xml中是否有这样的一个导航规则,这个对JSF的小改动对那些页面是动态选择的情况非常适用,比如你的页面地址是从数据库中获取的。
其实在JSF中实现这个小特性是非常简单的,只需要扩展一下JSF提供的默认导航处理器就可以了。

java 代码
  1. /**  
  2.  * 扩展JSF默认导航处理器,支持形式为'/index.faces'的outcome,直接定向到这个页面  
  3.  *   
  4.  * @author jones  
  5.  *   
  6.  */  
  7. public class MyNavigationHandler extends NavigationHandlerImpl {   
  8.   
  9.     @Override  
  10.     public void handleNavigation(FacesContext context, String fromAction,   
  11.             String outcome) {   
  12.            
  13.         if(outcome != null && outcome.startsWith("/")){   
  14.                
  15.             Application application = context.getApplication();   
  16.             ViewHandler viewHandler = application.getViewHandler();   
  17.             UIViewRoot newRoot = viewHandler.createView(context,outcome);   
  18.             context.setViewRoot(newRoot);   
  19.                
  20.         }else{   
  21.             super.handleNavigation(context, fromAction, outcome);   
  22.         }   
  23.            
  24.     }   
  25.   
  26. }  
   发表时间:2008-05-18  
这个不错,很有价值的,想来当初也碰上需要动态导航的情况,后来只好用别的办法绕过去的~~~
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics