我已经构建了两个web应用程序,让我们称之为App1和App2。
App1有多个页面(Page1.jsp和Page2.jsp)。App1是一个独立的应用程序,它有一个链接到两个页面的菜单。
App2有多个页面(Page3.jsp和Page4.jsp)。App2也是一个独立的应用程序,它有一个链接到两个页面的菜单。
现在,我想将App1和App2组合成一个超级应用程序,而不需要修改App1或App2。这个超级应用程序应该有一个链接到App1/Page1.jsp、App1/Page2.jsp、App2/Page3.jsp和App2/Page4.jsp的菜单。
我想出了几种方法来做到这一点:
解决方案1:框架
我可以创建一个菜单框架,它有一个链接到App1和App2页面的菜单。
我可以有一个单独的框架,用于显示App1和App2的内容。
然而,我并不热衷于使用框架(http://www.html-faq.com/htmlframes/?framesareevil)。
解决方案2:基于参数动态构建菜单
超级应用程序可以有一个基于div的菜单,链接到App1和App2。它可以在URL上传递一个参数,例如App1/Page1.jsp?parent=SuperApp。
App1和App2可以基于父参数动态构建菜单。
例如,如果父参数不存在,那么App1将使用它的普通菜单,该菜单链接到Page1.jsp和Page2.jsp。
但是,如果存在父参数,那么App1将使用SuperApp菜单(SuperApp/header.html) -它将动态地将此HTML包含在JSP页面中。此SuperApp菜单将链接到App1和App2中提供的所有页面。
第二种解决方案不需要使用框架,但我想探讨一下是否还有其他我没有考虑过的解决方案?
发布于 2013-02-18 07:04:25
让第三个web应用程序负责菜单如何:

在每个页面中配置一个非常小的JavaScript组件,对菜单应用程序进行AJAX调用以填充它。通常,这将通过一个带有特殊类或ID的空<div>来实现。您还有一个脚本(从MenuApp下载),它定位<div>并添加菜单。
一些想法:
这主要的缺点是额外的回调,尽管如果您已经在使用AJAX,这可能是一个非常低的开销。
顺便说一句,这类似于FaceBook、Google+、Twitter、Pinterest等如何实现它们的类似、PlusOne等按钮,同时在第三方web应用程序中具有最小的侵入性。见:https://developers.google.com/+/plugins/+1button/
发布于 2013-02-24 21:32:45
一个可能的解决方案是当您想同时使用两个应用程序时使用portlets。部署将是相同的,您不需要在App1和App2中进行任何更改。根据您想要使用的portlet容器,配置是不同的,但最后您将为每个应用程序配置一个portlet,并将该门户的菜单配置为针对每个应用程序的urls。
两个可能的解决方案是利费莱和喷气速度。我和第二个人一起工作。还有JBoss GateIn portlet容器。
https://stackoverflow.com/questions/14762842
复制相似问题