在 EL 中使用 getter 代替字段名更安全吗?

Is it more safe to use getter instead of field name in EL?

我在 JSP 中使用 EL。例如

案例 1:

<h5>${fgst.userFlag}</h5>

案例二:

<h5>${fgst.getUserFlag()}</h5>

我想知道,案例 2 是否比案例 1 更安全可靠地从模型访问数据?

安全上绝对没有区别。

请注意 ${fgst.userFlag} 根本不访问该字段。在幕后,它将 属性 名称 userFlag 转换为 getter 方法 getUserFlag(),并最终在 ${fgst} 表示的实例上调用它。换句话说,它与 ${fgst.getUserFlag()}.

完全一样

您可以通过重命名字段名称同时保持 getter 方法名称不变来自己确认。您会注意到这两种方法都继续有效,并且它们实际上都调用了 getter 方法,这也可以通过在 getter 方法上放置调试断点来观察。

另请参阅:

  • javax.el.PropertyNotFoundException: Property 'foo' not found on type com.example.Bean