Custom button with action listener - will not invoke action listener

Hi
For whatever reason, I cannot find a concise example of a simple custom component that can invoke an action listener. The tutorials I've read so far either ignore this fundamental topic or only make the slightest make reference to it.
The best I have come up with - in terms of a simple prototype is below... but, the action listener is never invoked.... Can someone tell me what I am missing (full code below). Hopefully, what is missing or incorrect will be obvious to you JSF experts out there.
Thanks for any help!!
-f
tld
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
  <tlib-version>0.01</tlib-version>
  <jsp-version>1.2</jsp-version>
  <short-name>jsfcustomcomponent</short-name>
  <uri>http://jsfcustomcomponent/</uri>
  <description><![CDATA[jsf custom component tags]]>  </description>
  <tag>
    <name>specialBtnTag</name>
    <tag-class>jsfcustomcomponent.SpecialBtnTag</tag-class>
    <attribute>
      <name>value</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <description><![CDATA[button value]]></description>
    </attribute>
    <attribute>
      <name>actionListener</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <description><![CDATA[action listener]]> </description>
    </attribute>
  </tag>
</taglib>
SpecialBtnComponent
package jsfcustomcomponent;
import javax.faces.component.*;
import javax.faces.context.*;
import javax.faces.el.*;
import javax.faces.event.*;
public class SpecialBtnComponent
    extends UIComponentBase implements ActionSource
    public static final String COMPONENT_TYPE = "SpecialBtnComponent";
    public static final String RENDERER_TYPE = "SpecialBtnRenderer";
    public String getFamily()
        return COMPONENT_TYPE;
    public SpecialBtnComponent()
        super();
        setRendererType(SpecialBtnComponent.RENDERER_TYPE);
    private String value;
    public void setValue(String value, FacesContext facesContext)
        this.value = value;
    public String getValue()
        if (null != value)
            return value;
        ValueBinding _vb = getValueBinding("value");
        if (_vb != null)
            return (String) _vb.getValue(getFacesContext());
        else
            return null;
    private MethodBinding action = null;
    public MethodBinding getAction()
        return action;
    public void setAction(MethodBinding methodBinding)
        this.action = action;
    private MethodBinding actionListener = null;
    public MethodBinding getActionListener()
        return (this.actionListener);
    public void setActionListener(MethodBinding methodBinding)
        this.actionListener = actionListener;
    public boolean isImmediate()
        return false;
    public void setImmediate(boolean _boolean)
        //this.immediate = immediate;
    public void addActionListener(ActionListener actionListener)
        addFacesListener(actionListener);
    public ActionListener[] getActionListeners()
        return (ActionListener[]) getFacesListeners(ActionListener.class);
    public void removeActionListener(ActionListener actionListener)
        removeFacesListener(actionListener);
    public Object saveState(FacesContext context)
        Object values[] = new Object[5];
        values[0] = super.saveState(context);
        values[1] = value;
        values[2] = saveAttachedState(context, action);
        values[3] = saveAttachedState(context, actionListener);
        return ( (Object) (values));
    public void restoreState(FacesContext context, Object state)
        Object values[] = (Object[]) state;
        super.restoreState(context, values[0]);
        value = (String) values[1];
        action = (MethodBinding) restoreAttachedState(context, values[2]);
        actionListener = (MethodBinding) restoreAttachedState(context, values[3]);
    public void broadcast(FacesEvent event) throws AbortProcessingException
        super.broadcast(event);
        if (event instanceof ActionEvent)
            FacesContext context = getFacesContext();
            MethodBinding mb = getActionListener();
            if (mb != null)
                mb.invoke(context, new Object[]
                          {event});
            ActionListener listener = context.getApplication().getActionListener();
            if (listener != null)
                listener.processAction( (ActionEvent) event);
    public void queueEvent(FacesEvent e)
        if (e instanceof ActionEvent)
            if (isImmediate())
                e.setPhaseId(PhaseId.APPLY_REQUEST_VALUES);
            else
                e.setPhaseId(PhaseId.INVOKE_APPLICATION);
        super.queueEvent(e);
SpecialBtnRenderer
package jsfcustomcomponent;
import java.util.*;
import javax.faces.component.*;
import javax.faces.context.*;
import javax.faces.event.*;
import javax.faces.render.*;
public class SpecialBtnRenderer
    extends Renderer
    String value;
    public SpecialBtnRenderer()
    public void decode(FacesContext context, UIComponent component)
        Map requestMap = context.getExternalContext().getRequestParameterMap();
        String clientId = component.getClientId(context);
        SpecialBtnComponent specialBtnComponent = (SpecialBtnComponent) component;
        String value = (String) requestMap.get(clientId);
        if (null != value)
            specialBtnComponent.setValue(value, context);
        ActionEvent actionEvent = new ActionEvent(specialBtnComponent);
        specialBtnComponent.queueEvent(actionEvent);
    public void encodeEnd(FacesContext context, UIComponent component) throws java.io.IOException
        SpecialBtnComponent specialBtnComponent = (SpecialBtnComponent) component;
        ResponseWriter writer = context.getResponseWriter();
        String clientId = component.getClientId(context);
        value = (String) component.getAttributes().get("value");
        if (value == null)
            value = "defaultValue";
        buildSpecialBtn(writer, value, clientId, specialBtnComponent);
    private void buildSpecialBtn(ResponseWriter writer, String value, String clientId, SpecialBtnComponent component) throws java.io.IOException
        writer.startElement("table", component);
        writer.startElement("tbody", component);
        writer.startElement("tr", component);
        writer.startElement("td", component);
        value = String.valueOf(value);
        writer.startElement("input", component);
        writer.writeAttribute("type", "submit", null);
        writer.writeAttribute("name", clientId, "clientId");
        writer.writeAttribute("value", value, null);
        writer.endElement("input");
        writer.endElement("td");
        writer.endElement("tr");
        writer.endElement("tbody");
        writer.endElement("table");
SpecialBtnTag
package jsfcustomcomponent;
import javax.faces.component.*;
import javax.faces.el.*;
import javax.faces.webapp.*;
import com.sun.faces.util.*;
public class SpecialBtnTag
    extends UIComponentTag
    public String value = null;
    public String actionListener = null;
    public String getComponentType()
        return SpecialBtnComponent.COMPONENT_TYPE;
    public String getRendererType()
        return SpecialBtnComponent.RENDERER_TYPE;
    protected void setProperties(UIComponent component)
        super.setProperties(component);
        if (! (component instanceof SpecialBtnComponent))
            throw new IllegalStateException("Component " + component.toString() +
                                            " not expected type.  Expected: jsfcustomcomponent.SpecialBtnComponent.  Perhaps you�re missing a tag?");
        SpecialBtnComponent specialBtnComponent = (SpecialBtnComponent) component;
        if (value != null)
            if (isValueReference(value))
                ValueBinding vb = Util.getValueBinding(value);
                specialBtnComponent.setValueBinding("value", vb);
            else
                throw new IllegalStateException("The value for �value� must be a ValueBinding.");
        if (actionListener != null)
            if (isValueReference(actionListener))
                ValueBinding vb = Util.getValueBinding(actionListener);
                specialBtnComponent.setValueBinding("actionListener", vb);
            else
                throw new IllegalStateException("The value for �actionListener� must be a ValueBinding.");
    public void release()
        super.release();
        value = null;
        actionListener = null;
    public void setValue(String value)
        this.value = value;
    public String getValue()
        return this.value;
    public void setActionListener(String actionListener)
        this.actionListener = actionListener;
    public String getActionListener()
        return this.actionListener;
jsp1.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://jsfcustomcomponent/" prefix="j"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<link rel="stylesheet" type="text/css" href="./stylesheet.css" title="Style">
</head>
<body>
<f:view>
  <h:form id="form01">
    <h:outputText value="test special button with action listener"/>
    <j:specialBtnTag value="#{specialBtnBacking.specialBtnValue}" actionListener="#{specialBtnBacking.specialBtnActionListener}"/>
    <h:messages/>
    <h:outputText value="#{specialBtnBacking.outcome}"/>
  </h:form>
</f:view>
</body>
</html>
SpecialBtnBacking
package specialbtn;
import javax.faces.context.*;
import javax.faces.event.*;
public class SpecialBtnBacking
    private FacesContext context;
    public SpecialBtnBacking()
        this.setSpecialBtnValue("Special Button with action listener");
    private String specialBtnValue;
    public String getSpecialBtnValue()
        return this.specialBtnValue;
    public void setSpecialBtnValue(String specialBtnValue)
        this.specialBtnValue = specialBtnValue;
    private String outcome="actionlistener NOT invoked: click specialBtn above to test";
    public String getOutcome()
        return outcome;
    public void setOutcome(String outcome)
        this.outcome = outcome;
    public void specialBtnActionListener(ActionEvent evt)
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Jsp1Backing/specialBtnActionListener()!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        this.outcome="***action listener invoked!!!***";
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
  <managed-bean>
    <managed-bean-name>specialBtnBacking</managed-bean-name>
    <managed-bean-class>specialbtn.SpecialBtnBacking</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
  </managed-bean>
  <component>
    <component-type>SpecialBtnComponent</component-type>
    <component-class>jsfcustomcomponent.SpecialBtnComponent</component-class>
    <component-extension>
      <renderer-type>SpecialBtnRenderer</renderer-type>
    </component-extension>
  </component>
  <render-kit>
    <renderer>
      <component-family>SpecialBtnComponent</component-family>
      <renderer-type>SpecialBtnRenderer</renderer-type>
      <renderer-class>jsfcustomcomponent.SpecialBtnRenderer</renderer-class>
    </renderer>
  </render-kit>
</faces-config>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
  <display-name>pagerWEB</display-name>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>
  <jsp-config>
    <taglib>
      <taglib-uri>http://jsfcustomcomponent/</taglib-uri>
      <taglib-location>/WEB-INF/jsfcustomcomponent.tld</taglib-location>
    </taglib>
  </jsp-config>
  <servlet>
    <description>Added by JBuilder to compile JSPs with debug info</description>
    <servlet-name>debugjsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
      <param-name>classdebuginfo</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>debugjsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
  </servlet-mapping>
</web-app>

got it working....
The changes were:
in "SpecialBtnRenderer"...
--new--
                    mb.invoke(context, new Object[1]);
--old--
                    mb.invoke(context, new Object[0]);
in "SpecialBtnTag"...
--new--
import javax.faces.event.ActionEvent;
--new--
                MethodBinding mb = FacesContext.getCurrentInstance().getApplication().createMethodBinding(specialBtnListener, new Class[]{ActionEvent.class});
--old--
                MethodBinding mb = FacesContext.getCurrentInstance().getApplication().createMethodBinding(specialBtnListener, null);
-Below is the entire application, again -- for those (like myself) who need concrete examples...
I hope this helps someone else! --f
jsp1.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://jsfcustomcomponent/" prefix="j"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<link rel="stylesheet" type="text/css" href="./stylesheet.css" title="Style">
</head>
<body>
<f:view>
    <h:messages/>
  <h:form id="form01">
    <h:outputText value="test special button with action listener"/>
    <j:specialBtnTag value="#{specialBtnBacking.specialBtnValue}" specialBtnListener="#{specialBtnBacking.specialBtnActionListener}"/>
    <h:outputText value="#{specialBtnBacking.outcome}"/>
  </h:form>
</f:view>
</body>
</html>
SpecialBtnBacking
package specialbtn;
import javax.faces.context.*;
import javax.faces.event.*;
public class SpecialBtnBacking
    private FacesContext context;
    public SpecialBtnBacking()
        this.setSpecialBtnValue("Special Button with action listener");
    private String specialBtnValue;
    public String getSpecialBtnValue()
        return this.specialBtnValue;
    public void setSpecialBtnValue(String specialBtnValue)
        this.specialBtnValue = specialBtnValue;
    private String outcome = "actionlistener NOT invoked: click specialBtn above to test";
    public String getOutcome()
        return outcome;
    public void setOutcome(String outcome)
        this.outcome = outcome;
    public void specialBtnActionListener(ActionEvent evt)
        System.out.println("\n\n");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Jsp1Backing/specialBtnActionListener()!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Jsp1Backing/specialBtnActionListener()!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Jsp1Backing/specialBtnActionListener()!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Jsp1Backing/specialBtnActionListener()!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Jsp1Backing/specialBtnActionListener()!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n");
        this.outcome = "***action listener invoked!!!***";
jsfcustomcomponent.tld
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
  <tlib-version>0.01</tlib-version>
  <jsp-version>1.2</jsp-version>
  <short-name>jsfcustomcomponent</short-name>
  <uri>http://jsfcustomcomponent/</uri>
  <description><![CDATA[jsf custom component tags]]>  </description>
  <tag>
    <name>specialBtnTag</name>
    <tag-class>jsfcustomcomponent.SpecialBtnTag</tag-class>
    <attribute>
      <name>value</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <description><![CDATA[button value]]></description>
    </attribute>
    <attribute>
      <name>specialBtnListener</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <description><![CDATA[action listener]]> </description>
    </attribute>
  </tag>
</taglib>
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
  <managed-bean>
    <managed-bean-name>specialBtnBacking</managed-bean-name>
    <managed-bean-class>specialbtn.SpecialBtnBacking</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
  </managed-bean>
  <component>
    <component-type>SpecialBtnComponent</component-type>
    <component-class>jsfcustomcomponent.SpecialBtnComponent</component-class>
    <component-extension>
      <renderer-type>SpecialBtnRenderer</renderer-type>
    </component-extension>
  </component>
  <render-kit>
    <renderer>
      <component-family>SpecialBtnComponent</component-family>
      <renderer-type>SpecialBtnRenderer</renderer-type>
      <renderer-class>jsfcustomcomponent.SpecialBtnRenderer</renderer-class>
    </renderer>
  </render-kit>
</faces-config>
SpecialBtnComponent.java
package jsfcustomcomponent;
import javax.faces.component.*;
import javax.faces.context.*;
import javax.faces.el.*;
import javax.faces.event.*;
public class SpecialBtnComponent
    extends UIComponentBase implements ActionSource
    public static final String COMPONENT_TYPE = "SpecialBtnComponent";
    public static final String RENDERER_TYPE = "SpecialBtnRenderer";
    public String getFamily()
        return COMPONENT_TYPE;
    public SpecialBtnComponent()
        super();
        setRendererType(SpecialBtnComponent.RENDERER_TYPE);
    private String value;
    public void setValue(String value, FacesContext facesContext)
        this.value = value;
    public String getValue()
        if (null != this.value)
            return this.value;
        ValueBinding _vb = getValueBinding("value");
        if (_vb != null)
            return (String) _vb.getValue(getFacesContext());
        else
            return null;
    private MethodBinding specialBtnListener = null;
    public MethodBinding getActionListener()
        return (this.specialBtnListener);
    public void setActionListener(MethodBinding actionListener)
        this.specialBtnListener = actionListener;
    public Object saveState(FacesContext context)
        Object values[] = new Object[3];
        values[0] = super.saveState(context);
        values[1] = saveAttachedState(context, this.specialBtnListener);
        values[2] = this.value;
        return (values);
    public void restoreState(FacesContext context, Object state)
        Object values[] = (Object[]) state;
        super.restoreState(context, values[0]);
        this.specialBtnListener = (MethodBinding) restoreAttachedState(context, values[1]);
        this.value = (String) restoreAttachedState(context, values[2]);
    public void broadcast(FacesEvent event) throws AbortProcessingException
        super.broadcast(event);
        if (event instanceof ActionEvent)
            FacesContext context = getFacesContext();
            MethodBinding mb = this.getActionListener();
            if (mb != null)
                try
                    mb.invoke(context, new Object[]
                              {event});
                catch (EvaluationException ex)
                    System.out.println("SpecialBtnComponent/broadcast(FacesEvent event)...EvaluationException encountered - ex.getMessage()=" + ex.getMessage());
                    ex.printStackTrace();
            ActionListener actionListener = context.getApplication().getActionListener();
            if (actionListener != null)
                actionListener.processAction( (ActionEvent) event);
    public void queueEvent(FacesEvent e)
        if (e instanceof ActionEvent)
            e.setPhaseId(PhaseId.INVOKE_APPLICATION);
        super.queueEvent(e);
    public MethodBinding getAction()
        return null;
    public void setAction(MethodBinding methodBinding)
    public boolean isImmediate()
        return false;
    public void setImmediate(boolean _boolean)
    public void addActionListener(ActionListener actionListener)
        addFacesListener(actionListener);
    public ActionListener[] getActionListeners()
        return (ActionListener[]) getFacesListeners(ActionListener.class);
    public void removeActionListener(ActionListener actionListener)
        removeFacesListener(actionListener);
SpecialBtnTag.java
package jsfcustomcomponent;
import javax.faces.component.*;
import javax.faces.el.*;
import javax.faces.webapp.*;
import com.sun.faces.util.*;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
public class SpecialBtnTag
    extends UIComponentTag
    public String value = null;
    public String specialBtnListener = null;
    private SpecialBtnComponent specialBtnComponent;
    public SpecialBtnTag()
        super();
    public String getComponentType()
        return SpecialBtnComponent.COMPONENT_TYPE;
    public String getRendererType()
        return SpecialBtnComponent.RENDERER_TYPE;
    protected void setProperties(UIComponent component)
        super.setProperties(component);
        if (! (component instanceof SpecialBtnComponent))
            throw new IllegalStateException("Component " + component.toString() +
                                            " not expected type.  Expected: jsfcustomcomponent.SpecialBtnComponent.  Perhaps you�re missing a tag?");
        specialBtnComponent = (SpecialBtnComponent) component;
        if (value != null)
            if (isValueReference(value))
                ValueBinding vb = Util.getValueBinding(value);
                specialBtnComponent.setValueBinding("value", vb);
            else
                throw new IllegalStateException("The value for �value� must be a ValueBinding.");
        if (specialBtnListener != null)
            if (isValueReference(specialBtnListener))
                MethodBinding mb = FacesContext.getCurrentInstance().getApplication().createMethodBinding(specialBtnListener, new Class[]{ActionEvent.class});
                ( (SpecialBtnComponent) component).setActionListener(mb);
            else
                MethodBinding mb = Util.createConstantMethodBinding(specialBtnListener);
                ( (SpecialBtnComponent) component).setActionListener(mb);
    public void release()
        super.release();
        value = null;
        specialBtnListener = null;
    public void setValue(String value)
        this.value = value;
    public String getValue()
        return this.value;
    public void setSpecialBtnListener(String specialBtnListener)
        this.specialBtnListener = specialBtnListener;
    public String getSpecialBtnListener()
        return this.specialBtnListener;
SpecialBtnRenderer
package jsfcustomcomponent;
import java.util.*;
import javax.faces.component.*;
import javax.faces.context.*;
import javax.faces.event.*;
import javax.faces.render.*;
import javax.faces.el.MethodBinding;
import javax.faces.el.*;
public class SpecialBtnRenderer
    extends Renderer
    String value;
    public SpecialBtnRenderer()
        super();
    public void decode(FacesContext context, UIComponent component)
        try
            Map requestMap = context.getExternalContext().getRequestParameterMap();
            String clientId = component.getClientId(context);
            SpecialBtnComponent specialBtnComponent = (SpecialBtnComponent) component;
            String value = (String) requestMap.get(clientId);
            if (null != value)
                specialBtnComponent.setValue(value, context);
                MethodBinding mb = specialBtnComponent.getActionListener();
                if (mb != null)
                    System.out.println("SpecialBtnRenderer/decode...mb.getExpressionString()=" + mb.getExpressionString());
                    //mb.invoke(context, new Object[0]);
                    mb.invoke(context, new Object[1]);
                ActionEvent actionEvent = new ActionEvent(specialBtnComponent);
                specialBtnComponent.queueEvent(actionEvent);
        catch (EvaluationException ex)
            ex.printStackTrace();
    public void encodeEnd(FacesContext context, UIComponent component) throws java.io.IOException
        SpecialBtnComponent specialBtnComponent = (SpecialBtnComponent) component;
        ResponseWriter writer = context.getResponseWriter();
        String clientId = component.getClientId(context);
        value = (String) component.getAttributes().get("value");
        if (value == null)
            value = "defaultValue";
        buildSpecialBtn(writer, value, clientId, specialBtnComponent);
    private void buildSpecialBtn(ResponseWriter writer, String value, String clientId, SpecialBtnComponent component) throws java.io.IOException
        writer.startElement("table", component);
        writer.startElement("tbody", component);
        writer.startElement("tr", component);
        writer.startElement("td", component);
        value = String.valueOf(value);
        writer.startElement("input", component);
        writer.writeAttribute("type", "submit", null);
        writer.writeAttribute("name", clientId, "clientId");
        writer.writeAttribute("value", value, null);
        writer.endElement("input");
        writer.endElement("td");
        writer.endElement("tr");
        writer.endElement("tbody");
        writer.endElement("table");
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
  <display-name>pagerWEB</display-name>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>
  <jsp-config>
    <taglib>
      <taglib-uri>http://jsfcustomcomponent/</taglib-uri>
      <taglib-location>/WEB-INF/jsfcustomcomponent.tld</taglib-location>
    </taglib>
  </jsp-config>
</web-app>

Similar Messages

  • 2nd Gen Ipod will sync with itunes but will not download new song

    My Ipod will sync with itunes but will not download newly purchased songs.  It is Ipod nano 2nd gen.

    If you want to use automatic syncing, you may need to set up or update the iPod's Music sync settings in iTunes.  If the new songs are not included in what gets synced to the iPod, they will not sync.
    If the sidebar (along left side of window) is hidden, from the menu bar, under View, select Show Sidebar.  The iPod appears in the sidebar, under DEVICES.  Select it there, to show its Summary screen to the right.  Toward the top, there is a bar of buttons, starting with Summary.  Click on Music next to Summary.  This Music screen is where you tell iTunes how to sync songs to the iPod.
    Check the box for Sync Music, if not already checked. This is the "switch" to enable automatic syncing for songs.
    NOTE:  If Sync Music is not already checked, that means the iPod is currently set to Manually manage music.  Setting up automatic syncing will replace the iPod existing content.  If you want to add the new songs manually to the iPod (instead of using automatic syncing), please post back.
    If your iTunes library fits on the iPod, you can choose the option to sync Entire music library.  Otherwise, choose the option to sync Selected playlists, artists, albums, and genres.  Below that, select (checkmark) what you want to sync to the iPod from the lists.
    One convenient way to set this up is to first create one or more playlists in your iTunes library, with ALL of the songs you want on the iPod.  Or you can use existing playlists.  Back on the iPod's Music screen in iTunes, select those playlists under Playlists.
    When you click Apply, iTunes syncs the songs in your selection(s) to the iPod (replacing its existing content).  Going forward, to update the iPod, you can just update those playlists in your iTunes library (add/remove songs).  If you have new songs, add them to a playlist that is synced to the iPod.  The iPod does not need to be connected.  The next time you connect the iPod (or click Sync if already connected), iTunes automatically updates your iPod with the same changes.

  • My Mac Mini was not sending a signal to the monitor. I powered down using the power button and now it will not start. When i power up I get a strange 2 tone sound, like a warning alarm. The fan starts, and the light comes on, but no screen

    My Mac Mini was not sending a signal to the monitor. I powered down using the power button and now it will not start. When i power up I get a strange 2 tone sound, like a warning alarm. The fan starts, and the light comes on, but no screen.
    I have tried with a wired USB keyboard and mouse using a single screen. Powered up with option pressed. No change.
    Reset SMC  no change

    Run the Apple hardware test to see what it tells you. Run the extended test when prompted, which can take awhile.

  • My HP Pavilion p7-1439 with Windows 8 will not add Bluetooth Devices.

    My HP Pavilion p7-1439 with Windows 8 will not add Bluetooth Devices.  I ran all available updates using HP Assistant. The BT devices work with Laptop, iPhone, Surface and Ipad but not the HP Desktop.  I can access the Add Device button and the system searches but never finds any BT devices.  Any thoughts?

    Hi NumberTumbler,
    I would like to help you with your Bluetooth issue. 
    In this document Understanding Bluethooth Wireless Technology go to the section "Setting up a Bluetooth Device" for detailed information about setting up  Bluetooth devices on your computer.
    Let me know if this helps or if you need any further assistance.
    Thank you,
    I worked on behalf of HP.

  • Help creating buttons with actions

    I am looking for a way to program buttons with actions and conditional outputs. As an example: After populating a set number of cells, I would like to be able to program a button to copy the contents of those cellsto another set of cells. Also, a button programmed to clear the contents of the cellswould be nice.
    anyone?

    Buttons are typically associated to macros (VBA or other). As Numbers 1.0 does not support any macros, I am afraid that you are out of look.
    To copy values is very simple with formulas of course (=a1 and so on), but you probably know that, and need something more powerful.

  • None of the buttons on my Torch will not work - phone inoperable

    The buttons on my Torch will not work...I can receive calls but can't answer them. I cannot do anything with the phone...it is fully charged - HELP! I am traveling and this is now critical!

    I don't have a 9800 here to test, but if you keep the keyboard closed, isn't there a onscreen enter key?
    Normally the buttons not workng is indicative of moisture issues. It sounds like what I have seen multiple times on a device with moisture damage.
    Even sitting on a bathroom counter during a hot steamy shower or bath can cause keyboard and trackball problems UNTIL properly dried out. It really is more common than you think.
    1. Remove the battery immediately!! Do not attempt to turn on your BlackBerry.
    2. Let the device dry in a warm, dry place for 3 to 5 days* (see below)
    3. DO NOT "check it each day" by placing the battery in. Leave it be to dry completely. This takes time. Replacing the battery to check it can only damage it more (moisture + electrical current = disaster).
    4. If the device is warm after the drying period, allow it to cool to room temperature before placing the battery back in.
    Suggestions on drying your BlackBerry in a warm place (open, with the battery out):
    *Place the BB in a container of dry UNcooked rice, and then you might also place it in any of the locations mentioned below.
    *On top of any dry heat emitting electronic component: TV cabinet or CRT, LCD, cable TV/Satellite converter box or plasma monitor
    *On the dashboard of your car on a sunny day
    1. If any post helps you please click the below the post(s) that helped you.
    2. Please resolve your thread by marking the post "Solution?" which solved it for you!
    3. Install free BlackBerry Protect today for backups of contacts and data.
    4. Guide to Unlocking your BlackBerry & Unlock Codes
    Join our BBM Channels (Beta)
    BlackBerry Support Forums Channel
    PIN: C0001B7B4   Display/Scan Bar Code
    Knowledge Base Updates
    PIN: C0005A9AA   Display/Scan Bar Code

  • My iPod Touch power button is stuck and will not pop back up. My iPod Touch Repairs and Service Coverage is still active, Does that mean I can get a new iPod Touch?

    My iPod Touch power button is stuck and will not pop back up. My iPod Touch Repairs and Service Coverage is still active, Does that mean I can get a new iPod Touch?

    Apple will most likely exchange it. The one you receive will be refurbished.
    Basic troubleshooting steps  
    17" 2.2GHz i7 Quad-Core MacBook Pro  8G RAM  750G HD + OCZ Vertex 3 SSD Boot HD 
    Got problems with your Apple iDevice-like iPhone, iPad or iPod touch? Try Troubleshooting 101
     In Memory of Steve Jobs 

  • CDs I burn from my itunes 10 on my macbook with snow lepard will not play in the regular cd player.  How do I burn Cds that will pay in a reg old cd player?

    CDs I burn from my itunes 10 on my macbook with snow lepard will not play in the regular cd player.  How do I burn Cds that will pay in a reg old cd player?

    When the computer was new, I had the same issue I have now.  It was new and I could not burn to play on a reg cd player. Today, I can not burn to play on a reg cd player. Inbetween, I could not burn to play on a reg cd player.  I keep giving up and then trying months later.
           I have recently made the cds that play on the computer.  I have also tried in the last month to make a dvd copy, it played.  I have gone to people's homes and tried the cd's burned in my computer. They are not recognized.  This last round I have only used the cd-r but have tried many others in the past. I am running out of money to keep buying different brands, kinds, etc.  I figured it must be my lac of knowledge and am trying to get some new here. 
    Sincerely,
    Paul

  • I just downloaded and installed the new iTunes on a Toshiba Satelite of some age. It was just completely reformated and updated with XP. iTunes will not open. The terms page comes up and when I agree it disappears. I have uninstalled and reinstalled.

    I just downloaded and installed the new iTunes on a Toshiba Satelite of some age. It was just completely reformated and updated with XP. iTunes will not open. The terms page comes up and when I agree it disappears. I have uninstalled and reinstalled.

    Perhaps something here will help:
    http://support.apple.com/kb/TS1421
    Regards.

  • Statistic report with figures that will not change when rerun months later

    Hi,
    Is there any good practices that we can follow to create statistic reports with figures that will not change even when rerun after few months later?
    My scenario is my statistic report is generated based on data that is "alive" which means the record will get change after a period of time. So, if you generate the statistic report in for January 2006 in the month of January and regenerate in May for the January 2006 statistic, the figure is different. But what I want is to be able to get the same figures.
    I know in this case looks like we need some sort of summary tables, so posting this to get advice on the best way to design such summary tables. Please comment if there is other ways of doing it.
    Summary tables may work for statistic report, but how to support detail report listing where the records are required to be the same when it was generated few months ago.
    Please advise.
    Thank you.

    What happens, when you execute a report today is the following: a select statement is fired at the data base and the result set is displayed in the report. The data can change after the moment you launched your report. What you could do to keep the result set the same, is implementing a user parameter that fills your date discriminator.

  • Using Lion, recent Movies with .mov extension will not play in Quicktime, but earlier ones taken with same camera (Kodak M530) will play fine.

    Using Lion, recent Movies with .mov extension will not play in Quicktime, but earlier ones taken with same camera (Kodak M530) will play fine. I have got VLC which runs them fine but cannot get movies saved in iPhoto to play in VLC...and of course its a real bugger to copy moves from iPhoto to another folder; in fact if anyone can tell me how to do that I will accept defeat!

    Hello Shad:
    Have you downloaded and installed Flip4Mac?
    http://www.microsoft.com/mac/otherproducts/otherproducts.aspx?pid=windowsmedia
    Barry

  • Mainstage 2 : The poeples who buy complete version of Logic with Mainstage 2 will not have free update of Mainstage ??? This is outragous !!!

    Mainstage 2 : The poeples who buy complete version of Logic with Mainstage 2 will not have free update of Mainstage ??? This is outragous !!!

    I also agree that the paid update is a sham to those who bought the full boxed set of Logic.  The ONLY reason I bought the boxed version of Logic was to get MainStage....I don't use anything else in that package.  So ultimately, I've paid hundreds of dollars for a product that's now selling for $30 and I don't even get a free update.....sheesh!
    As far as this logic goes: " MS 2.2 is a feature release" and that I "never bought that version of MainStage with the Logic Studio box": bollocks!  Many consider a feature release to be more than a .1 incremental update...OSX versions excluded.  With the exception of major OSX updates, I've never experienced being charged money for a .1 incremental update, and the vast majority of software developers have a policy that incremental updates are free until a new version is released i.e. v.2.5.6 to v3.0.  I'm sure that's not always the case, but it's definitely the case in an overwhelming majority of cases.
    Shame on Apple for this price gouge.

  • I am running Yosemite and have just bought Pro Tools Express with the intent to Upgrade to Pro Tools 11. Pro Tools Express is not compatible with Yosemite and will not install. How can I get this done?

    I am running Yosemite and have just bought Pro Tools Express with the intent to Upgrade to Pro Tools 11. Pro Tools Express is not compatible with Yosemite and will not install. How can I get this done?

    I have had this problem for close to a year. I have an Extreme base station, two Airport Express's and multiple G4 Mac's with up to date software. I have spent a huge amount of time trouble shooting, resetting, reapplying software and finally calling Applecare without any help. It would be great to get this problem solved.
    Powerbook G4   Mac OS X (10.4.7)  

  • PDF, with electronic signature, will not save. In Finder it's nowhere, tried multiple times..

    Started in Preview to save...but PDF, with electronic signature, will not save. In Finder it's nowhere, tried multiple times.

    I am having the same problem with signatures.  I am including a form in a pdf portfolio to collect signatures from different users who have Reader.  I make sure that features have been extended for reader. Most of the time they are okay.  But every once in a while (at least one every two weeks) I get a user telling me they can't sign.  No message or error of any kind, just a quick blink but no signature.  As a work-around I've had to save a copy and re-extend features.  This can be time consuming when there are a few documents I need to circulate.  Please advise.

  • I often get emails with attachments that will not open with my mac. Is there any free software to help this

    I often get emails with attachments that will not open with my mac often a small ? will show. How do I open these

    What kind of attachment? Post an example file name.

Maybe you are looking for

  • IPad 2 not recognized on iTunes

    This evening I had problems starting apps as the memory was full.  I plugged the iPad into the PC and started iTunes.  All looked good and 'normal' so I started to delete some of the kids game apps. A message then came up to update the iPad iOS softw

  • In GarageBand how can I record a mono source into both stereo channels?

    I am working on a project that has only 1 track (Casio keyboard plugged into my Mac's audio input). This obviously, results in a mono recording using the left channel only. Is there any way to copy that track into the right channel, so at least the r

  • Self-registration auto populate/save approver values

    Hi, From OOTB scenario for Self Registration in OIM 9.1.x, after submitting the user registration request, approver needs to provide 'Organization Name' (i.e., Xellerate Users) before approving. We created an 'Organizations.Organization Name' field i

  • Navajo diacritics in ID

    I'm typesetting a book in ID CS6 that uses many Navajo diacritics, but I can't get them to show up with any font I've tried, including Times New Roman Navajo. The Word document that I poured uses plain old Times New Roman and most (but not all show u

  • Fmt:message not using the correct locale

    Hello, I have a webapp which uses struts and jstl. I use the following code snipped to display localized strings <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> <%@ taglib uri