假设我没有利用 OGNL 来创建我的 Struts2 Web 应用程序,而只是纯粹使用 Sun 提供的典型 el。它的缺点是什么?
据我所知,OGNL 是一种表达式,它试图根据当前状态从 ValueStack 中匹配最佳匹配值。是否也可以仅通过单独使用 EL 来实现?
提前感谢您的回复
丹尼尔
简短回答:是的,您可以使用 JSP EL 而不是 OGNL。两种语言都有其优点和缺点,但使用任何一种都没有明显的缺点。
长答案: OGNL 由 XWork 和 Struts2 在内部使用,因此您实际上不能删除依赖项本身,但是您当然可以在 JSP 视图层中主要(甚至完全)使用 JSP EL。
使用这两种表达语言各有利弊。OGNL 在 JSP EL 上大放异彩的一个领域是动态创建地图和集合,例如用于支持<select/>
元素等。
然而,在大多数情况下,我发现 JSP EL 更适合我,因为我大量使用 JSP 简单标签(.tag
文件)。
@Amit Sharma:我不同意在 OGNL 上使用 JSP/JSTL 和 Struts 标签违背了使用 Struts2 的目的。拦截器框架、类型转换和结果类型是使用 Struts2 的最可扩展和最令人信服的理由之一。这些东西都与任何特定的视图技术无关。
即使您选择不将 OGNL 与您的 struts2 Web 应用程序一起使用,我认为也不可能这样做。struts2 在内部使用 OGNL 进行数据传输和类型转换。如果您打算使用 struts2,则必须使用 OGNL,如果您不这样做,struts2 会自动执行。
尽管您可能会省略 OGNL 并使用纯 EL,但这样一来,使用 struts2 的整个目的就会失败,因为如果您不使用 struts2 的内置功能,那么您可能正在使用 EL 从头开始编写这些机制。
虽然一开始可能看起来很奇怪,但 OGNL 相当强大,在 struts2 中开发时值得考虑。