Bal*_*usC 15
简单地说,${}只能做一个get,而#{}能做一个get 和一个set的价值.
在遗留JSP的JSF中,#{}必须使用语法来触发托管bean的自动创建并将请求参数设置为模型值.如果您${bean.value}在JSF页面中使用,那么如果托管bean bean不在范围内,则不会自动创建具有名称的托管bean .此外,value如果在输入组件中使用该值提交表单,则不会设置托管bean属性.
在Facelets上的JSF中,它${}被重新解释为#{},因此它们的行为完全相同.
结果${...}是一个值,而结果#{...}是绑定.这种绑定可以一遍又一遍地执行.
EL区分两种绑定; 值绑定和方法绑定.值绑定只是一般方法绑定的便利,因为它通过单个表达式表示getter和setter.
在某种程度上,${...}可以通过表达式将值传递给方法:
foo(bar.kaz());
Run Code Online (Sandbox Code Playgroud)
在运行时,bar.kaz()进行评估,foo只接收返回的值.foo方法一无所知bar.kaz(),不能在以后再次进行评估.
#{...} 可以将lambda传递给方法或旧的匿名内部类进行比较:
foo(new IntegerReturn() { public int execute() {
bar.kaz();
});
Run Code Online (Sandbox Code Playgroud)
在这里,foo得到一个IntegerReturn它可以在它想要的时候调用它想要的东西.
| 归档时间: |
|
| 查看次数: |
4295 次 |
| 最近记录: |