Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 没有bean属性的JSF组件绑定_Jsf 2_El - Fatal编程技术网

Jsf 2 没有bean属性的JSF组件绑定

Jsf 2 没有bean属性的JSF组件绑定,jsf-2,el,Jsf 2,El,以下代码究竟是如何工作的: #{aaa.id} <h:inputText id="txt1" binding="#{aaa}"/> {aaa.id} 我的意思是,组件绑定通常通过在bean中指定一个属性(UIComponent类型)来工作。这里没有bean或属性,但是名称“aaa”被正确绑定(显示组件id-“txt1”)。它是如何工作的/在哪里指定 谢谢 更新:(第3.1.5章)说明: 组件绑定是一种特殊的值表达式,可用于帮助将组件实例“连接”到 JavaBean的相应属性…指定

以下代码究竟是如何工作的:

#{aaa.id}
<h:inputText id="txt1" binding="#{aaa}"/>
{aaa.id}
我的意思是,组件绑定通常通过在bean中指定一个属性(UIComponent类型)来工作。这里没有bean或属性,但是名称“aaa”被正确绑定(显示组件id-“txt1”)。它是如何工作的/在哪里指定

谢谢

更新:(第3.1.5章)说明:

组件绑定是一种特殊的值表达式,可用于帮助将组件实例“连接”到 JavaBean的相应属性…指定的ValueExpression必须指向UIComponent(或)类型的读写JavaBeans属性 适当的子类。“


在构建视图树的过程中,它被放在默认的EL范围内(此时所有
绑定
属性——以及JSTL
和JSF
等标记处理程序的属性——都将被评估)。在视图树的渲染过程中,它以普通EL方式显示。视图树的渲染发生在视图树的构建之后,所以它是这样工作的。这段代码并不像您从源代码中期望的那样“逐行”运行

我不能给你指出一个被指定为没有的引用。你必须分别阅读和,然后做1+1=2

顺便说一下,为了避免新开发人员之间的混淆,并避免与EL作用域中的现有变量发生冲突,您可以在请求作用域中使用a,该作用域在
faces config.xml
中声明如下:


所有组件绑定的持有者。
组件
java.util.HashMap
要求
和的用法如下

{components.aaa.id}
这更像是自我记录

另见:

感谢BalusC的回复。我确实在你的代码中见过很多次。渲染自然是清晰的,我指的是名称的边界。我用JSF规范的摘录更新了这篇文章,其中明确指出给定的ValueExpression必须是一个Bean属性。在
binding
上,JSF将检查属性是否已经存在,如果已经存在,则从中获取组件(必须确实是正确子类的实例),如果不存在,则只需自动创建组件并将其放入其中。请注意,属性类型可以是
Object
或组件实例的任何其他超类。因此,结论是,“binding”属性作为一种方式,在EL范围内保存某事物(在本例中为组件)。有趣。只是提到它,因为我必须(部分)自己意识到:例如#{components.aaa}是一个坏例子。最好是#{components[myAbsolutelyUniqueId]}-唯一的,因为如果您有两个panelGrids或datatables,那么相同的Id在这两个中都是有效的,因为jsf将它作为前缀。它也将以不同的形式有效。h:inputText with binding=“#{var}”在输入数值时引发异常。对数字有什么限制吗?可以使用哪种类型的对象?