EL语法中#{...}和$ {...}之间的区别是什么

Kow*_*ser 11 jsf el java-ee

你可以看到,我的问题很简单.

是什么区别#{...},并${...}在EL语法?

Bal*_*usC 15

简单地说,${}只能做一个get,而#{}能做一个get 一个set的价值.

在遗留JSP的JSF中,#{}必须使用语法来触发托管bean的自动创建并将请求参数设置为模型值.如果您${bean.value}在JSF页面中使用,那么如果托管bean bean不在范围内,则不会自动创建具有名称的托管bean .此外,value如果在输入组件中使用该值提交表单,则不会设置托管bean属性.

在Facelets上的JSF中,它${}被重新解释为#{},因此它们的行为完全相同.

也可以看看:


Arj*_*jms 6

结果${...}是一个值,而结果#{...}是绑定.这种绑定可以一遍又一遍地执行.

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它可以在它想要的时候调用它想要的东西.

  • +1:很好的解释 (2认同)