[英]How can I reuse code when two different wicket applications share common functionality
我有一个 Wicket AuthenticatedWebApplication,它有几个页面和功能需要在我必须开发的新 AuthenticatedWebApplication 中重用。
我正在使用 Wicket 1.4、Spring 和 Hibernate。
两个应用程序甚至将共享相同的外观(应用程序徽标除外),现在在基本页面中实现。
有没有人有类似的经历? 我绝对不想重复复制粘贴代码,因为通用功能实现了一个可以并且将会改变的工作流程。
我可以做些什么来保持我的应用程序模块化并实现我的目标?
这是基于组件的框架的要点。 将公共代码(组件、行为、基类作为 session、应用程序等)放在单独的 java 项目 (.jar) 中。 以后在具体的.war项目中依赖这个项目(把.jar放在WEB-INF/lib中)。 瞧!
我的公司一直这样做。 我们有一个核心 package,它包含基本的 UserApplication、用户帐户、登录、身份验证等。然后,我们开发的每个项目都扩展了这个基本 package。 有一些重复——例如几乎所有的配置文件看起来都一样——但每个都有它自己的theme
目录来提供标记,根据应用程序的外观和感觉进行定制。
执行此操作时的一些建议:
getXPanel()
方法,每个子应用程序都会覆盖这些方法。 例如, getHeaderPanel()
<wicket:extend>
功能的地方。 也是放置 jQuery 进口等的好地方。我们的每个应用程序都至少分为 4 个模块。 例如:
ScienceApplication extends UserAppication
。FoundationsApplication extends ScienceApplication
InquiryApplication extends ScienceApplication
我们的两个科学应用程序有不同的标题,甚至有几个不同的页面,但ScienceApplication
有我上面描述的那些方法。
从您的其他评论和答案来看:
根据您当前的实现,您可以通过实现两个不同的图像资源或通过将新项目中的不同模型提供给基本页面来更改您的徽标,或者您可以将图像 URL 放入您的属性并在应用程序中提供不同的属性文件。 这同样适用于数据库或表......例如,使用 JPA 您可以将所有全局使用的实体推送到您的基础并使用不同的表名实现两个不同的用户实体。 您甚至可以使用共享的抽象 baseUser-entity 来减少那里的代码重复。
根据您的问题,我猜您主要关心的是页面。 那么这是我的建议:首先,您应该指定页面的哪些部分可以从一个应用程序更改为另一个应用程序。 然后你必须取出这些部分的数据才能得到模板。 现在您应该(根据您的要求)决定如何存储数据(例如,在 xml 文件、DB 中)。 现在,您可以根据需要从在线或离线模板编译您的页面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.