如何以编程方式构建控件?

W_K*_*W_K 5 lotus-domino xpages

我有用Java编写的自定义控件.为简单起见,我们假设它看起来像这样:

public class HelloworldControl extends UIComponentBase {
    @Override
    public void decode(FacesContext context) {
        String cid = this.getClientId(context);
        ...
        super.decode(context);
    }

    @Override
    public void encodeBegin(FacesContext context) throws IOException {
        ResponseWriter writer = context.getResponseWriter();
        writer.writeText("Hello world!", this);
        // I want a view!!
    }

    @Override
    public void encodeEnd(FacesContext context) throws IOException {
         ResponseWriter writer = context.getResponseWriter();
         ...
    }

    public void restoreState(FacesContext context, Object state) {
        Object values[] = (Object[]) state;
        ...
        super.restoreState(context, values[0]); 
    }

    public Object saveState(FacesContext context) {
        Object values[] = ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我想以编程方式添加子控件.例如,我希望子视图控件在Hellow世界文本下呈现视图.

我怎样才能做到这一点?动态构建控件的标准过程是什么?

简单地说 - 我想以编程方式构建标准组件的层次结构,我想将它附加到我的控件上.

Tob*_*les 4

我认为您寻找的答案是实现 FacesComponent 接口 Keith Strickland 在他的博客上发布了详细说明:

http://xprentice.gbs.com/A55BAC/keithstric.nsf/default.xsp?documentId=82770C11FA7B9B21852579C100581766

它使用 initBeforeContents、buildContents 和 initAfterContents 方法来允许您添加子项。

希望有帮助。