这些年来,我越来越喜欢 Model-View-Controller 设计模式及其提供的好处。但是当涉及到 Web 应用程序时,我正在努力充分利用这些好处。
如果我要创建一个名为 UsersComponent 的组件,它包括:
- 用户列表
- 主动过滤此用户列表的文本字段
然后在 Java Swing 中,您可以轻松地创建一个扩展 JPanel 的 UserComponent 类,在 UserComponent 中,您可以创建模型、视图和控制类。你最终会得到一个非常容易重用的组件。
现在,我想做的是在 Java-EE 中模仿这一点。字符串模板似乎为此提供了解决方案。但是,有一个额外的转折。我喜欢网页设计师。而且我很乐意为他们提供添加组件的机会,而不必让开发人员参与进来,或者在他们应该使用的入口点上投入太多精力。
例如,假设我们有一个基本页面模板,并且设计者希望在此页面的某处添加 UserComponent 组件。然后,您将需要填充模型,在大多数情况下,基于一些请求参数。
所以,这是实际的问题。有谁知道确定给定模板中包含哪些模板的方法。因此,您可以在运行时(或者更确切地说,每次修改时)分析此模板,并在主页控制器中进行适当的内务管理?
基本上,所以我可以做到这一点:
- 设计器创建一个字符串模板。说,MyPage.st
- 重写模块将 www.mydomain.com/IgnoredFolderNameForSeo/MyPage 更改为 www.mydomain.com/pagerenderservlet?templateName=MyPage
- 页面渲染 servlet 根据参数加载字符串模板,分析它以确定字符串模板中使用了哪些组件,并根据需要对其进行初始化。
目前,我能想出的最佳解决方案是为不同的基本页面提供不同的 servlet,从而公开不同的功能子集。但我对这个解决方案一点也不满意。如果有可能动态处理它,它会更整洁。基本上,拥有所有支持的组件的处理程序,但只初始化/处理实际需要的那些。
我很想听听你们对此的看法:)
** 更新 **
我认为我提到的摇摆使这个问题有点混乱。我想做的是创建组件,Web设计人员可以通过字符串模板使用这些组件,然后他们可以将其包含在任何给定的字符串模板中。
所以我想这一切都归结为这一点。
有没有人知道字符串模板框架,它让我在运行时确定字符串模板中包含哪些其他字符串模板。