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