在 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
我在 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