dev2dev 首页 > 资源中心 > 专家Blog > 专家Blog文章
利用门户框架的灵活性解决难题
如果要我选出我最喜欢的WebLogic Portal 8.1特性,无疑就是整个框架的灵活性了。对于那些初始设计不太合理的情况,这种灵活性可以带来很大帮助。因为许多框架代码放在/frameworks目录下的各个文件夹中,通常更改或替换现有的行为只需修改适当的框架文件。
有一次一个客户求助于我,他希望默认页面不要出现在菜单中。他们的基本情况是这样的:他们有一个名为“Home”的book,其默认页面也称为“Home”。标准的多级菜单将会呈现book的顶级菜单项,然后是该页面的下一级菜单项,因此会出现两个“Home”菜单项。他们希望只有一个“Home”菜单项,单击它时会转向book的默认页面。
最简单的解决方案就是将该页面隐藏,但是他们不想这么做。因为如果隐藏了book的默认页面,那么导航到book时就会显示下一个非隐藏的页面,而不是隐藏的默认页面。这个特性对于某些实现来说是一个优点,但遗憾的是,对于本例,它却成为一个障碍。
我们讨论了几种解决方案,最后筛选出如下两个方案:
1. 修改菜单代码,使其不生成默认页面的菜单项;
2. 修改菜单代码,使得即使隐藏默认页面,单击book也会正确地导航到该页面。
开始我们选择的是方案2,因为我们认为,也许在某些场景下默认页面应该显示为菜单项,而此时创建一个配置方案来处理异常会使方案1实现起来更为复杂。
实现方案2相对来说比较简单,只需更改submenu.jsp,生成一个直接指向book的默认页面而不是book本身的URL。如果URL显式地指向一个隐藏页面,那么仍然可以导航到该页面,所以我们利用这个行为来实现我们的目标。
遗憾的是,存在一个该行为不能奏效的特例。门户的默认book的默认页面可以被认为是该门户的默认页面,因为当使用根URL访问门户时,将直接定位到该页面。如果门户的默认页面是隐藏的,导航到门户的根URL将会导致定位到默认book的下一个非隐藏页面。因为这个行为发生在门户servlet内部,我们不能随便地修改它。
因为这个特例,我们只能使用方案1。因此我们修改了菜单代码,使其不生成门户的默认页面的菜单项,但是在其他的所有地方,我们都使用方案2。
所需修改的代码非常少,而且应用起来很轻松。多亏了这个框架的灵活性,我们才得以解决这个最初设计时没有认真考虑的需求。
原文出处:
http://dev2dev.bea.com/blog/gnunn/archive/2005/08/portals_flexibl_1.html
作者其它文章
|