我有一个 Wicket AuthenticatedWebApplication,它有几个页面和功能需要在我必须开发的新 AuthenticatedWebApplication 中重复使用。
我正在使用 Wicket 1.4、Spring 和 Hibernate。
两个应用程序甚至将共享相同的外观(应用程序 Logo 除外),现在在基页中实现。
有没有人有过类似的经历?我绝对不想重复复制粘贴代码,因为通用功能实现了一个可以而且将会改变的工作流程。
我可以做些什么来保持我的应用程序模块化并实现我的目标?
最佳答案
我的公司一直这样做。我们有一个核心包,其中包含基本的 UserApplication、用户帐户、登录、身份验证等。然后,我们开发的每个项目都扩展了这个基本包。有一些重复 - 例如几乎所有配置文件在每个文件中看起来都相同 - 但每个文件都有自己的 theme
提供标记的目录,根据应用程序的外观和感觉进行定制。
执行此操作时的一些建议:
- 核心应用程序应该有相当数量的
getXPanel()
每个子应用程序覆盖的方法。例如,getHeaderPanel()
- 使用每个人都扩展的“BasePage”类。这是您设置整体外观的地方,在子应用程序主题文件夹中被覆盖,并大量使用
<wicket:extend>
特征。也是放置 jQuery 导入的好地方,ec。 - 请记住,标记很容易被覆盖。您的子应用程序不需要创建页面的 java 扩展来更改 Logo 。只需使用不同的标记。
我们的每个应用程序都至少分为 4 个模块。例如:
- base - Wicket 依赖,基本事件记录
- 数据 - UserApplication、AdminPage、用户 hibernate 对象。每个页面都有自己的标记,但通常会被覆盖。
- science - 一个包含大量代码的核心项目,用于显示科学教科书。
ScienceApplication extends UserAppication
. - 基础 - 针对小学生的特定主题实现
FoundationsApplication extends ScienceApplication
- 查询 - 针对高中生的不同主题具体实现
InquiryApplication extends ScienceApplication
我们的两个科学应用程序有不同的标题,甚至有几个不同的页面,但是 ScienceApplication
有我上面描述的那些方法。
关于java - 当两个不同的 wicket 应用程序共享通用功能时,如何重用代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6599892/