JSF 1.2的startElement和writeAttribute解释

时间:2012-08-04 16:32:50

标签: java jsf jsf-1.2

我有机会为我的项目编写一些自定义渲染器,并且运行良好。但是我对ResponseWriter方法中的一些参数感到有些困惑。文档没有很好地解释这一点,所以我希望其中一位常驻JSF专家可以更好地解释这一点。具体做法是:

public abstract void startElement(java.lang.String name,
                              javax.faces.component.UIComponent component)
                       throws java.io.IOException

Parameters:
    name - Name of the element to be started
    component - The UIComponent (if any) to which this element corresponds 

第二个参数实际上做了什么?我是否在渲染器中传递“null”或“this”似乎工作正常?

类似于writeAttribute:

public abstract void writeAttribute(java.lang.String name,
                                java.lang.Object value,
                                java.lang.String property)
                         throws java.io.IOException

Parameters:
    name - Attribute name to be added
    value - Attribute value to be added
    property - Name of the property or attribute (if any) of the UIComponent associated with the containing element, to which this generated attribute corresponds 

为什么ResponseWriter需要知道支持属性?同样,如果我在编写类属性时传递null或“styleClass”,它似乎工作正常。

好奇的大脑想知道,而我的google-fu正在失败...

1 个答案:

答案 0 :(得分:2)

标准的Mojarra实现与它们 nothing component的{​​{1}}参数和startElement()的{​​{1}}参数被忽略。

但是,可以提供自定义响应编写器。对于某些现实世界的实现,了解响应编写器中的原始property和/或关联的writeAttribute()属性是完全有意义的。

虽然JSF 2.0是针对性的,但Html5ResponseWriter of OmniFaces将是一个很好的例子。在允许/编写某些特定HTML5属性之前,UIComponent通过多次UIComponent检查确定startElement()的类型。