论坛首页 Java版 企业应用

如何统一管理系统内的所有url链接(组件化)

浏览 3579 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2005-12-22
最近我在做一个web项目.我将产品分成了多个 相对可定制的组件 这些组件都是可独立运行 单独测试的.

组件开发异常顺利 甚至可以任意的定制.

但在组合产品的时候遇到了巨大的麻烦.

所有组件都有自己的url 链接. 为了便于独立测试 它们的url都是随意的 只考虑在组件内是可用的 不重复的.没有在设计前 为各组件的url做统一的设计.

现在为了组合他们 不得不修改组件的url. url遍布配置文件 控制流 view中 工作量很大. 最麻烦的是组件并非都是单页连续的 多是view中的一个窗口. 经常要在一页中 用xsl css定位拼装多个组件的view. 这样匹配他们各自的url变得异常复杂 !

最让人头痛的是修改url后 破坏了组件的独立性 组件无法单独测试运行 未来的定制更是无从谈起了. 可能要再组装.

是否有办法统一管理系统内的所有url ? 从而实现组件的"热插拔" "热定制".
   
最后更新时间:2005-12-22
Portlet的情形就是这样吧。
URL in Portlet template should not be hard coded, instead it should be generated by some Portal Function. Like <%=portalServer.generateUrl(portletId, parameterData);%>
   
0 请登录后投票
最后更新时间:2005-12-22
醒来老大推荐的behaviour挺好用的:
http://bennolan.com/behaviour/

以样式表的匹配方式应用行为。

要做的大概是找到那些组件中的url和正常页面url的区别特征,用js进行修正。
需要注意的是:
1. 非body onload情况下 生成的组件url
2. 避免重复修正
   
0 请登录后投票
最后更新时间:2005-12-22
buaawhl 写道
Portlet的情形就是这样吧。
URL in Portlet template should not be hard coded, instead it should be generated by some Portal Function. Like <%=portalServer.generateUrl(portletId, parameterData);%>


好象是这样的. portlet也许能解决问题.
   
0 请登录后投票
最后更新时间:2005-12-22
liusong1111 写道
醒来老大推荐的behaviour挺好用的:
http//bennolan.com/behaviour/

以样式表的匹配方式应用行为。

要做的大概是找到那些组件中的url和正常页面url的区别特征,用js进行修正。
需要注意的是:
1. 非body onload情况下 生成的组件url
2. 避免重复修正


我的组件只有一部分用到ajax 用js修正难度好像也大了点 我再想想. 谢谢 !
   
0 请登录后投票
最后更新时间:2005-12-22
winterwolf 写道
liusong1111 写道
醒来老大推荐的behaviour挺好用的:
http://bennolan.com/behaviour/

以样式表的匹配方式应用行为。

要做的大概是找到那些组件中的url和正常页面url的区别特征,用js进行修正。
需要注意的是:
1. 非body onload情况下 生成的组件url
2. 避免重复修正


我的组件只有一部分用到ajax 用js修正难度好像也大了点 我再想想. 谢谢 !


写一个Aspect或者Filter,怎么叫都可以
然后对生成的HTML字符串中的class="UrlClass"进行匹配替换
   
0 请登录后投票
最后更新时间:2005-12-26
copenhagen 写道

写一个Aspect或者Filter,怎么叫都可以
然后对生成的HTML字符串中的class="UrlClass"进行匹配替换


哈哈 我尝试了无数的办法(Portlet还没试过 需要学习) 包括用js实现url自动拼装配.
(根据request parameter自动导航 系统中所有链接都是一个. 只是?后面的东西不一样) 
结果发现不但不能简化问题 反而使问题更复杂 ! 换个人都无法维护 时间长了自己也无法维护.

现在我开始老老实实的用手工改url.

比如一个view由3个子view构成 他的url就这样匹配 *-*-* 这样3个view的信息被合并为一个. css来定位每个view. 

每个子view的url就这样匹配 *.*.* 比如 lib.shop.buycart 点来指定组件的位置.
   
0 请登录后投票
最后更新时间:2005-12-30
winterwolf 写道
最近我在做一个web项目.我将产品分成了多个 相对可定制的组件 这些组件都是可独立运行 单独测试的.

组件开发异常顺利 甚至可以任意的定制.

但在组合产品的时候遇到了巨大的麻烦.

所有组件都有自己的url 链接. 为了便于独立测试 它们的url都是随意的 只考虑在组件内是可用的 不重复的.没有在设计前 为各组件的url做统一的设计.

现在为了组合他们 不得不修改组件的url. url遍布配置文件 控制流 view中 工作量很大. 最麻烦的是组件并非都是单页连续的 多是view中的一个窗口. 经常要在一页中 用xsl css定位拼装多个组件的view. 这样匹配他们各自的url变得异常复杂 !

最让人头痛的是修改url后 破坏了组件的独立性 组件无法单独测试运行 未来的定制更是无从谈起了. 可能要再组装.

是否有办法统一管理系统内的所有url ? 从而实现组件的"热插拔" "热定制".


我自己实现了一个叫componet组件,可以被war工程引用。它的其中一个作用就是把war中的url注册到componet.xml里,并在war启动的时候自动进行注册,并可以在同一个ear里面通过componentService调出这些url。这样即可实现war工程的热插拔。
   
0 请登录后投票
最后更新时间:2005-12-30
那么view(比如jsp html)中的url链接也可以修改么 ?

我的url比较复杂 完全自动修改太难了.

不过你的回复给我一点启发 我可以做一个工具 提高手工修改的速度.先从半自动化开始.

虽然热插拔 热定制实现不了 但至少是 可插拔 可定制 哈哈
   
0 请登录后投票
最后更新时间:2005-12-30
winterwolf 写道
那么view(比如jsp html)中的url链接也可以修改么 ?

我的url比较复杂 完全自动修改太难了.

不过你的回复给我一点启发 我可以做一个工具 提高手工修改的速度.先从半自动化开始.

虽然热插拔 热定制实现不了 但至少是 可插拔 可定制 哈哈


不好意思,前面我说得不是太清楚。

其实我的component原理是这样的:它认为任何war、jar这些工程都是应用的一个组件,组件是为应用提供服务的。这些服务可以用jsp、java class/method、web service、ejb等等任何方式来实现。

因此,在我的应用里,所有对这些服务调用都是通过componentService和对应的标记库来实现的,因此也不存在所谓的改url的问题。我还提供了一个Menu工程来对这些component进行动态菜单管理,可以把当前活跃的所有component里UI类型的service配置成菜单和绑定权限。

此外,这些war工程本身都可以脱离其它war工程独立运行和测试。
   
0 请登录后投票
论坛首页 Java版 企业应用

跳转论坛:
JavaEye推荐