Hi!

What is the Java version?
What is the MyFaces version?

Udo

Goyo Escobar Escalero wrote:

I've a problem extendign the UISelectOne component...

My classes:

package holderTagClasses;


import javax.faces.application.Application;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.el.MethodBinding;
import javax.faces.el.ValueBinding;
import javax.faces.event.ValueChangeEvent;
import javax.faces.webapp.UIComponentTag;
public class BDE_IAS_ComboTag extends UIComponentTag{

    String lista;
    String listaValores;
    String value;
    String valueChangeListener;

    public String getValueChangeListener() {
       return valueChangeListener;
   }

   public void setValueChangeListener(String valueChangeListener) {
       this.valueChangeListener = valueChangeListener;
   }

    public void setLista(String lista){
        this.lista=lista;
    }

    public String getLista(){
        return lista;
    }

    public void setListaValores(String lista){
        this.listaValores=lista;
    }

    public String getListaValores(){
        return listaValores;
    }

    public void setValue(String valor){
        this.value=valor;
    }

    public String getValue(){
        return value;
    }

    public void release() {
        // the super class method should be called
        super.release();
        lista=null;
        value=null;
        valueChangeListener=null;
        listaValores=null;
    }

    protected void setProperties(UIComponent component) {
        super.setProperties(component);

        if (lista != null) {
            if (isValueReference(lista)) {
ValueBinding vb = FacesContext.getCurrentInstance().getApplication().createValueBinding(lista);
                component.setValueBinding("lista", vb);
            } else {
                if(lista.length()==0){
                    lista=null;
                }
                else{
                    component.getAttributes().put("lista",lista);
                }
            }
        }

        if (listaValores != null) {
            if (isValueReference(listaValores)) {
ValueBinding vb =FacesContext.getCurrentInstance().getApplication().createValueBinding(listaValores);
                component.setValueBinding("listaValores", vb);
            } else {
                if(listaValores.length()!=0){
component.getAttributes().put("listaValores",listaValores);
                }
                else{
                    if(lista!=null){
                        if(lista.length()>0){
ValueBinding vb =FacesContext.getCurrentInstance().getApplication().createValueBinding(lista);
                            component.setValueBinding("listaValores", vb);
                        }
                    }
                }
            }
        }

        if (value!=null) {
            if (isValueReference(value)) {
ValueBinding vb = FacesContext.getCurrentInstance().getApplication().createValueBinding(value);
                component.setValueBinding("value", vb);
            }
            else {
                if(value.length()==0){
                    value=null;
                }
                else{
                    component.getAttributes().put("value",value);
                }
            }
        }


        if (valueChangeListener != null) {
           if (isValueReference(valueChangeListener)) {
               FacesContext context = FacesContext.getCurrentInstance();
               Application app = context.getApplication();
MethodBinding mb = app.createMethodBinding(valueChangeListener, new Class[] { ValueChangeEvent.class });
               component.getAttributes().put("valueChangeListener", mb);
           }
       }
    }

    public String getRendererType() { return "combo"; }
    public String getComponentType() { return "combo"; }

}




package rendererClasses;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Map;

import javax.faces.component.EditableValueHolder;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.render.Renderer;


public class ComboRenderer extends Renderer{

public void encodeBegin(FacesContext context, UIComponent combo) throws IOException {
        ResponseWriter writer = context.getResponseWriter();
        char salto ='\n';

        try{
            //ArrayList lista = (ArrayList)getLista();
ArrayList lista = (ArrayList)combo.getAttributes().get("lista");
            ArrayList listaValores= new ArrayList();;
            if(lista!=null){
listaValores = (ArrayList)combo.getAttributes().get("listaValores");
                if(listaValores==null){
                    listaValores=lista;
                }
                else{
                    if(listaValores.size()==0){
                        listaValores=lista;
                    }
                }
            }

            writer.startElement("select", combo);
            writer.writeAttribute("name", combo.getId(), "id");
            writer.writeAttribute("id", combo.getId(), "id");
            writer.writeAttribute("size", new Integer(1), "size");
            int i=0;
            String valor;
            for(i=0;i<lista.size();i++){
                valor = (String)combo.getAttributes().get("value");
                if(valor.equals(listaValores.get(i))){
writer.write("<option value=\""+listaValores.get(i)+"\" selected>"+lista.get(i)+"</option>"+salto);
                }
                else{
writer.write("<option value=\""+listaValores.get(i)+"\">"+lista.get(i)+"</option>"+salto);
                }

            }
            writer.endElement("select");
        }
        catch(Exception e){
            System.out.println(e);
        }

    }

    public void decode(FacesContext context, UIComponent component) {
        EditableValueHolder combo = (EditableValueHolder) component;
Map requestMap = context.getExternalContext().getRequestParameterMap();
        String clientId = component.getClientId(context);

        if(requestMap.containsKey("Combo"+component.getId())){
String submittedValue = (String) requestMap.get("Combo"+component.getId());
            combo.setSubmittedValue((String) requestMap.get(clientId));
        }
    }

}





package uIClasses;

import javax.faces.component.UISelectOne;




public class BDE_IAS_UICombo extends UISelectOne{


    public BDE_IAS_UICombo() {
        setRendererType("combo"); // this component has a renderer
    }
}


Faces-config:

<component>
       <component-type>combo</component-type>
         <component-class>uIClasses.BDE_IAS_UICombo</component-class>
   </component>

    <render-kit>
        <renderer>
<component-family>javax.faces.component.UISelectOne</component-family>
            <renderer-type>combo</renderer-type>
            <renderer-class>rendererClasses.ComboRenderer</renderer-class>
        </renderer>
    </render-kit>


TLD:

<tag>
        <name>combo</name>
        <tag-class>holderTagClasses.BDE_IAS_ComboTag</tag-class>
        <body-content>JSP</body-content>
        <attribute>
            <name>lista</name>
        </attribute>
        <attribute>
            <name>listaValores</name>
        </attribute>
        <attribute>
            <name>value</name>
        </attribute>
        <attribute>
            <name>valueChangeListener</name>
        </attribute>
        <attribute>
            <name>id</name>
            <required>true</required>
        </attribute>
    </tag>


Someone can help me???

The error I've recieved from the servlet is:

[15/09/05 12:00:45:645 CEST] 2c602c60 WebGroup E SRVE0026E: [Error de servlet]-[]: java.lang.NullPointerException
    at java.lang.Throwable.<init>(Throwable.java)
    at java.lang.Throwable.<init>(Throwable.java)
    at java.lang.NullPointerException.<init>(NullPointerException.java:61)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:675) at javax.faces.webapp.UIComponentTag.encodeBegin(UIComponentTag.java:572) at javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:459) at org.apache.jsp._pruebasIndividuales._jspService(pruebasIndividuales.jsp ) at com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase.service(HttpJspBase.java:89)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.ibm.ws.webcontainer.jsp.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:344) at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.serviceJspFile(JspServlet.java:683) at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.service(JspServlet.java:781)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110) at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174) at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313) at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116) at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283) at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42) at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40) at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:1019) at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:592) at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:204) at com.ibm.faces.context.MultipartExternalContextImpl.dispatch(MultipartExternalContextImpl.java:320) at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:295) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110) at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174) at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313) at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116) at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283) at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42) at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40) at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:1019) at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:592) at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:204) at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:125) at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:286) at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71) at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:182) at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334) at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56) at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:615)
    at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:439)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java)


But I'm unable to repair it...PLEASE HELP!!!! ;)




Reply via email to