我有一个Wicket AuthenticatedWebApplication,它有几个页面和功能需要在我必须开发的新AuthenticatedWebApplication中重用。
我正在使用Wicket 1.4,Spring和Hibernate。
两个应用程序甚至会共享相同的外观(应用程序徽标除外),现在已在基页中实现。
有没有人有类似的经历?我绝对不想再复制粘贴代码,因为通用功能实现了可以并且将会改变的工作流程。
如何保持我的应用程序模块化并实现目标?
答案 0 :(得分:1)
这是基于组件的框架的要点。 将公共代码(组件,行为,基类作为会话,应用程序......)放在单独的Java项目(.jar)中。后来依赖于特定.war项目中的这个项目(将.jar放在WEB-INF / lib中)。瞧!
答案 1 :(得分:1)
我的公司一直这样做。我们有一个核心包,包含基本UserApplication,用户帐户,登录,身份验证等。然后,我们开发的每个项目都扩展了这个基础包。有一些重复 - 例如几乎所有配置文件在每个配置文件中看起来都相同 - 但是每个配置文件都有自己的theme
目录,该目录提供标记,并根据应用程序的外观进行定制。
执行此操作时的一些建议:
getXPanel()
方法,每个子应用程序都会覆盖这些方法。例如,getHeaderPanel()
<wicket:extend>
功能。也是放置jQuery导入的好地方,ec。我们的每个应用程序至少分为4个模块。例如:
ScienceApplication extends UserAppication
。FoundationsApplication extends ScienceApplication
InquiryApplication extends ScienceApplication
我们的两个科学应用程序有不同的标题,甚至有几个不同的页面,但ScienceApplication
有我上面描述的那些方法。
答案 2 :(得分:1)
从您的其他评论和答案来看:
根据您当前的实施情况,您可以通过实施两个不同的图像资源或通过提供新项目到基础页面的不同模型来更改徽标,也可以将image-url放入属性并在应用程序中提供不同的属性文件。 这同样适用于数据库或表格...例如,使用JPA,您可以将所有全局使用的实体推送到您的基础,并使用不同的表名实现两个不同的用户实体。您甚至可以使用共享的抽象baseUser-entity来减少代码重复。
答案 3 :(得分:0)
根据你的问题,我猜你主要关注的是网页。那么这是我的建议: 首先,您应指定页面的哪些部分可以从一个应用程序更改为另一个应用程序。然后你必须取出这些部分的数据来获得模板。现在您应该(根据您的要求)决定如何存储数据(例如,在xml文件中,DB)。 现在,您可以根据需要在线或离线从模板编译页面。