Deprecated: Assigning the return value of new by reference is deprecated in /nfs/c01/h14/mnt/37629/domains/ on line 36

Deprecated: Assigning the return value of new by reference is deprecated in /nfs/c01/h14/mnt/37629/domains/ on line 21

Deprecated: Assigning the return value of new by reference is deprecated in /nfs/c01/h14/mnt/37629/domains/ on line 540
Evolutionary Dawn » Custom JSF Component 1.2

Evolutionary Dawn

June 11, 2009

Custom JSF Component 1.2

Filed under: Uncategorized — admin @ 12:25 pm

Since I had a hard time finding a complete solution anywhere online I decided that I would post a simple how-to for a JSF Custom component.

The problem that this component seeks to address is that the <f:verbatim> tag does not work properly in a <ui:repeat> tag.

This presented a issue to me because I have RAW HTML stored in my data model to be used in my simple blog application.

1. The most confusing thing about JSF Custom components.  YOU NEED 3 SEPERATE CLASSES TO IMPLEMENT A CUSTOM COMPONENT.

Alot of other tutorials will teach you there is a method in which you can use only two classes to accomplish the task, although this is true the most straight forward approach is to use 3 classes to implement your component.

The are as follows:

  1. ¬†The component class (For this tutorial: HTMLVerbatimComponent) This class is technically where the “DATA” resisdes
  2. The tag class (For this tutorial: HTMLVerbatimTag) This class is the ADAPTER piece between the “JSF Page” and the DATA Model “Your component”
  3. The renderer class (For this tutorial: HTMLVerbatimRenderer) This class is response for the actual rendering of the HTML or OUTPUT.

The component class:

package com.mdb.web.jsf.component;
import javax.faces.component.UIComponentBase;
import javax.faces.context.FacesContext;
import javax.el.ValueExpression;
public class HTMLVerbatimComponent extends UIComponentBase {
    public HTMLVerbatimComponent() { }
    //Properties you want exposed as tag values must be exposed using getters/setters
    private String value;
    public String getValue() {
        if(value != null)
            return value;
        //If the value has not already been set interpret the Expression language and get resulting object
        Object value = this.getValueExpressionValue("value");
        return value != null ? (String)value : null;
    public void setValue(String value) { this.value = value;}
    //Honestly I am not sure what this method does besides link the component to the config files
    public String getFamily() {
        return "com.mdb.web.jsf.component.HTMLVerbatim";
    //Method allows component state to be stored
    public Object saveState(FacesContext context) {
        return new Object[] { super.saveState(context), value};
    //Method allows component state to be restored
    public void restoreState(FacesContext context, Object object) {
        Object state[] = (Object[]) object;
        super.restoreState(context, state[0]);
        value = (String)state[1];
    //Helper method to simplify getters/setters
    //This helps the JSF Component use Expression Language
    private Object getValueExpressionValue(String name) {
        ValueExpression ve = super.getValueExpression(name);
        return ve.getValue(FacesContext.getCurrentInstance().getELContext());

The tag class:

package com.mdb.web.jsf.component;
import javax.faces.webapp.UIComponentELTag;
import javax.faces.component.UIComponent;
import javax.el.ValueExpression;
public class HTMLVerbatimTag extends UIComponentELTag {
    //Temporary holder property hence if I put
    //&lt;tag:htmlVerbatim value="#{SomeBackingBean.htmlText}"/&gt;
    //information is stored in this object until the data is pushed into the component in setProperties method
    private ValueExpression value = null;
    public HTMLVerbatimTag() {}
    public ValueExpression getValue() { return this.value;}
    public void setValue(ValueExpression value) { this.value = value;}
    //This is where the action happens
    //Data is taken from the tag on the JSF Page and placed into the Component
    protected void setProperties(UIComponent component) {
        HTMLVerbatimComponent verbatimComponent = (HTMLVerbatimComponent)component;
        if(value != null) {
            verbatimComponent.setValueExpression("value", value);
    //Method links this tag object to the component in config files
    public String getComponentType() { return "com.mdb.web.jsf.component.HTMLVerbatim"; }
    //Method links this tag object to the renderer in config files
    public String getRendererType() { return "com.mdb.web.jsf.component.HTMLVerbatim";}

The renderer class:

package com.mdb.web.jsf.component;import javax.faces.render.Renderer;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
public class HTMLVerbatimRenderer extends Renderer {public HTMLVerbatimRenderer() {}
    //Render your HTML HERE
    public void encodeBegin(FacesContext context, UIComponent component) throws IOException {
        HTMLVerbatimComponent verbatimComponent = (HTMLVerbatimComponent)component;
        ResponseWriter writer = context.getResponseWriter();

Now you must make some changes to your configuration files and I make the big assumption you are using Facelets.

Create a file in your WEB-INF directory called: custom.taglib.xml

Add the following content (Edit accordingly for your own component and domain):

  "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"

Edit your faces-config.xml and add the following content(Edit accordingly for your own component and domain):

<faces-config version="1.2">

Edit your web.xml and add the following content:


Now you should be able to use your new component/tag simply by adding a namespace to your JSF Page as such:


then using the tag as such:

<custom:htmlverbatim value="#{SomeBackingBean.htmlText}">

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

You must be logged in to post a comment.

Powered by WordPress

  • battle cry song download
  • chip download dateien wiederherstellen
  • alienware darkstar download for windows 7
  • civil service reviewer download philippines
  • adeel songs mp3 download
  • autominer and banker download
  • arihant books free download in hindi
  • canon mp510 driver download xp
  • a si tu pego download free
  • auto click 2.2 download gratis
  • canon d700 driver download
  • aotp battle cry mp3 download
  • carry on jatta download mp4
  • amhi satpute mp3 free download
  • bol na halke mp4 download
  • bechega rupaiya song download
  • abnt iso iec 17025 download
  • bella thorne music download
  • canon imageclass mf6550 download connected
  • cheapmunks o humdum download
  • 6.54 ai map download
  • canon pixma mg 5250 software download
  • a filha do chefe download rmvb
  • beleza babylon grow download
  • battle of britain video download
  • beastie boys whatcha want download
  • akkord ma doare download mp3
  • bad boy uli suzanna download
  • andrea bocelli romanza download mp3
  • acer iconia a500 os download
  • circo beat fito paez download
  • cara download youtube guna hp
  • can you download demos with xbox live silver
  • buton de download in html
  • cabeza de vaca film download
  • aerobic exercise download video free
  • best biggie smalls album download
  • amilo li 3710 treiber download
  • arias and symphonies download mp3
  • aplicatie android talking tom download
  • biztalk wcf lob adapter download
  • businessplan vorlage download kostenlos
  • certus pro unico download gratis
  • anggun mon meilleur amour download
  • alexander o'neal morning after download
  • baby shower playlist download
  • boards of canada live download
  • baldr sky divex dream world download
  • abrazado de un poste mp3 download
  • ar rahman 90's hits download
  • cd vs digital download quality
  • camarilla calculator download software
  • apostila direito administrativo concurso download
  • boney m ma baker download mp3 free
  • agenzia entrate download software unico 2012
  • boni switcher metin2 p server download
  • activision spider man download free
  • business plan pro download with crack
  • caderno de campo download
  • alchemie android download pc
  • andala rakshasi songs download cinemelody
  • anlage fe 1 2009 download
  • andrea bocelli songs download mp3
  • antigo testamento mp3 download
  • arman hovhannisyan los angeles download
  • billie jean mp3 download song free
  • acrobat pro x download free
  • barrilete los cafres free download
  • cele mai noi hituri download
  • bilhar em 3d download
  • branca de neve para download
  • check up on it free download
  • 20th century harmony download
  • a tempestade hd download
  • bundeswehr mod cod4 download
  • cm7 keyboard apk download
  • 2 elements brazilian nights download
  • cabarA© do rossi download gratis
  • beastie boys intergalactic download
  • adriano celentano viva italia download
  • black bar mitzvah mp3 download
  • circo de soleil beatles download
  • anaida album songs free download
  • auto start no root download
  • allexinno & starchild senorita download zaycev
  • bol ri kathputli song download
  • adaa garam masala free download
  • brokencyde will never die download free
  • alcorA?o em portugues para download
  • blaine larsen chillin mp3 download
  • cd angelico vieira 2011 download gratis
  • bhakthi ganangal malayalam download
  • ben 10 bounty hunters download
  • angry birds nokia x3 02 download free