0

JSF之间有什么区别

UIComponent component;
component.get *AttributeName*()  and
component.getAttributes().get("attibute name") 

?

component.set *AttributeName*(value) 
component.getAttributes().put("attibute name", value) 

?

例如,如果我在HashMapdisabled=true的调用阶段设置属性,会有什么不同吗?getAttributes()

4

1 回答 1

1

从功能上讲,它没有任何区别。从技术上讲,UIComponent#getAttributes()允许开发人员在获取/设置属性时不必担心确切的组件类型。

用 . 查看您的特定示例disabled="true"。超UIComponent类根本没有任何isDisabled()方法。您需要instanceof先对 eg 进行检查,HtmlInputText然后才能对其进行强制转换并最终对其进行调用isDisabled()。然后getAttributes()为了独立于它要容易得多。标准 JSF API 中的许多UIComponent相关方法采用或返回UIComponent超类而不是特定类型。

在设计合理的组件中,两者最终都委托给相同的UIComponent#getStateHelper().

于 2013-08-19T22:00:56.580 回答