April 2004
Intermediate to advanced
606 pages
20h 4m
English
As usual, we also need a custom action tag handler class for the component/renderer combination:
package com.mycompany.jsf.taglib;
import javax.faces.webapp.UIComponentTag;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import com.mycompany.jsf.component.UITree;
public class TreeTag extends UIComponentTag {
private String value;
private String var;
private String varNodeToggler;
public void setValue(String value) {
this.value = value;
}
public void setVar(String var) {
this.var = var;
}
public void setVarNodeToggler(String varNodeToggler) {
this.varNodeToggler = varNodeToggler;
}
public String getComponentType( ) {
return "com.mycompany.Tree";
}
public String getRendererType( ) {
return "com.mycompany.Tree";
}
protected void setProperties(UIComponent component) {
super.setProperties(component);
FacesContext context = getFacesContext( );
if (value != null) {
ValueBinding vb =
context.getApplication( ).createValueBinding(value);
component.setValueBinding("value", vb);
}
if (var != null) {
((UITree) component).setVar(var);
}
if (varNodeToggler != null) {
((UITree) component).setVarNodeToggler(varNodeToggler);
}
}
}The com.mycompany.jsf.taglib.TreeTag follows the
same pattern as all other component tag handlers, with setter methods
for all action attributes, getComponentType() and
getRendererType() methods returning the
appropriate values, and a setProperties() method that sets the component ...
Read now
Unlock full access