Combobox 从onclick事件访问组合框中的选定值

Combobox 从onclick事件访问组合框中的选定值,combobox,xpages,Combobox,Xpages,我有一个带有值列表的组合框。组合框未绑定到数据源。 我在组合框上有一个onClick事件,我需要知道选择了什么值。我可以做一个getComponent(“comboBox1”).getValue(),但我知道这是访问控件值的效率最低的方法。是否有更好的方法访问选定的值?我将组合框绑定到viewScope变量。易于在其他地方访问和使用。 但是有很多方法可以获得值,但这是我更喜欢的方法。在任何服务器端事件处理程序的上下文中,JavaScript变量this指的是事件处理程序本身。由于事件处理程序实际

我有一个带有值列表的组合框。组合框未绑定到数据源。
我在组合框上有一个onClick事件,我需要知道选择了什么值。我可以做一个getComponent(“comboBox1”).getValue(),但我知道这是访问控件值的效率最低的方法。是否有更好的方法访问选定的值?

我将组合框绑定到viewScope变量。易于在其他地方访问和使用。
但是有很多方法可以获得值,但这是我更喜欢的方法。

在任何服务器端事件处理程序的上下文中,JavaScript变量this指的是事件处理程序本身。由于事件处理程序实际上是组件,并且被视为与之关联的任何组件的“子级”,因此表达式
this.getParent()
将返回关联组件的句柄

因此,当您试图获取触发事件的同一组件的值时(在您的情况下,组合框的
onClick
事件):

this.getParent().getValue()


这不像
getComponent()
那样效率低下,因为它不必搜索。。。它只是在组件树中向上导航一级。但是,如果其他组件能够从了解其价值中获益,您还应该遵循Fredrik的建议,将组件绑定到
viewScope
变量,这样您就可以从内存中检索值,而不是试图从页面结构中的其他位置查找UI组件。

combobox是否真的被大量使用,以至于
getComponent
不够高效?而您可能对的但是我有一个相当复杂的XPage,需要进行大量的处理。我一直在检查我的代码,并试图尽可能多地删除getComponent的引用。结果相当显著。我建议远离getComponent。我可以在任何地方直接访问数据源,同样避免使用后端文档。我同意最好使用最有效的方法,看起来您得到了很好的响应!只需在
getParent
后面添加括号,就像第一段一样。那个小编辑是我不允许做的。谢谢,我做了绑定到viewScope并且喜欢它。我从来没有真正弄明白为什么要绑定一个范围变量,但它工作得很好,我可以看到我可以回到哪里,在其他代码中修改一些内容。@Bill Fox-我这样做了,它工作得很好。以前从未有机会检查过这一点,但这是一个简洁、快速的解决方案。多谢。