gpt4 book ai didi

jsf-2 - 如何在 JSF 组件树中查找复合组件?

转载 作者:行者123 更新时间:2023-12-04 02:48:33 25 4
gpt4 key购买 nike

我实现了一个简单的方法,它迭代 JSF 组件树并将组件设置为禁用。 (因此用户无法更改值)。但此方法不适用于复合组件。我怎样才能至少检测到复合组件?然后我可以尝试将特殊属性设置为禁用。

最佳答案

UIComponent 类有一个 isCompositeComponent()正是为了这个目的的辅助方法。

所以,这应该是这样的:

for (UIComponent child : component.getChildren()) {
if (UIComponent.isCompositeComponent(child)) {
// It's a composite child!
}
}

对于“幕后”工作感兴趣的人,这里是 Mojarra 2.1.25 的实现源代码:

public static boolean isCompositeComponent(UIComponent component) {

if (component == null) {
throw new NullPointerException();
}
boolean result = false;
if (null != component.isCompositeComponent) {
result = component.isCompositeComponent.booleanValue();
} else {
result = component.isCompositeComponent =
(component.getAttributes().containsKey(
Resource.COMPONENT_RESOURCE_KEY));
}
return result;

}

因此,它由组件属性的存在来标识,组件属性的名称由 Resource.COMPONENT_RESOURCE_KEY 定义其值为 "javax.faces.application.Resource.ComponentResource" .

关于jsf-2 - 如何在 JSF 组件树中查找复合组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18269927/

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