I have custom control written in Java. For the sake of simplicity lets assume that it looks like this:
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[] = ...
}
}
I would like to add programatically child control to it. For example I would like a child view control to render a view just under the Hellow world text.
How can i do this? What is the standard procedure to build dynamically a control?
To put it simply – I want programmatically build a hierarchy of standard components and I want to attach it to my control.
The answer I think your looking for is implement the FacesComponent Interface There is detailed instructions that Keith Strickland put out on his blog:
http://xprentice.gbs.com/A55BAC/keithstric.nsf/default.xsp?documentId=82770C11FA7B9B21852579C100581766
It uses the initBeforeContents, buildContents, and initAfterContents methods to allow you to add children.
Hope that helps.