作为我正在进行的项目的一部分,我们正在从 Velocity 迁移到 JSP。我需要将现有的 Velocity 模板集转换为 JSP。我们可以花几个小时讨论为什么会这样决定(部分是我的错),哪一个更好,也是劝阻管理层放弃这条道路的最佳方式,但这会浪费时间,因为他们致力于完成这项工作。
所以,我正在寻找的是一组模式、最佳实践,你有什么来帮助我。全局库文件中有很多 Velocity 宏,可用于各种模板。我正在考虑将每个宏转换为 JSP scriptlet 并将宏转换为 Java。然后我会通过 include 指令或 jsp:include 将该文件与所有 scriptlet 一起包含到每个 JSP 中。我还在考虑将每个对宏的调用转换为 scriptlet。这些宏的参数是 Spring ModelAndView 类中定义的 bean。
初步测试似乎表明这种方法行不通。我似乎遇到了 JSP 编译错误。但是,我可能会遗漏一个错误。
我在 OC4J 版本 10.1.3.4.0 上运行这个 Web 应用程序。
这是我必须处理的一个简单示例。这在 VM_global_library.vm 文件中:
#macro( showObjectErrors $objectName)
#if ($request.errorSystem.hasErrors($objectName))
<table>
#foreach ($error in $request.errorSystem.getErrors($objectName))
<tr>
<td class="acError">$error</td>
</tr>
#end
</table>
#end
#end
它在其他文件中被调用,如下所示:
#showObjectErrors( "logonForm" )
请注意,“请求”对象不是 HttpServletRequest,而是应用程序类。还有很多更复杂的例子无法展示。