gpt4 book ai didi

jsf - EL 中的 #{component} 到底是什么?

转载 作者:行者123 更新时间:2023-12-04 22:45:30 29 4
gpt4 key购买 nike

根据 https://code.google.com/p/primefaces/issues/detail?id=4720ComponentUtils.resolveWidgetVar(String expression, UIComponent component) 函数自 2013 年起在 Primefaces 中可用。它可以通过 "#{p:widgetVarFromContext(searchExpression, component)}" 函数在 EL 中使用。

如果多个组件在不同的 NamingContainer 中具有相同的 id,但仍存在于同一 View 中,则这很有用。在这种情况下,#{p:widgetVar(searchExpression)} 函数只返回找到的最后一个。

但是,我不明白如何引用必须作为 EL 的第二个参数传递的 UIComponent。上面提到的错误报告表明我们可以使用 #{component} 来引用它。谁能给我一个例子?

最佳答案

#{component} 是一个隐式 EL 变量,在 EL 范围内引用 current UIComponent (另见 implicit EL objects )。您通常只能在组件的 HTML 属性或模板文本子项中引用它。

例如。在 <h:inputText> 的情况下,它将引用 UIInput 类的一个实例,其中包含一个 isValid() 方法。

<h:inputText id="foo" required="true"
style="background: #{component.valid ? '' : 'pink'}"
onclick="alert('Client ID of this component is #{component.clientId}');" />

您还可以使用 binding 属性让 JSF 在 View 构建期间将引用放入 Facelet 范围内的组件实例。这样,在 View 渲染期间,组件引用将在 Facelet 中的任何位置可用。
<script>alert('Client ID of foo component is #{foo.clientId}');</script>
<h:inputText binding="#{foo}" />

也可以看看:
  • Difference between client id generated by component.clientId and p:component()
  • JSF component binding without bean property
  • How does the 'binding' attribute work in JSF? When and how should it be used?
  • 关于jsf - EL 中的 #{component} 到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29035760/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com