Can you try

 this.allCategories.add(new SelectItem(category.getId(),  category.getTitle()));

The getId() method should return the same value as returned by getAsString(). I 
think there is some problem...

Srikanth


-----Original Message-----
From: Kostas Karadamoglou [mailto:[EMAIL PROTECTED]
Sent: Friday, March 18, 2005 10:56 AM
To: MyFaces Discussion
Subject: Re: Problem with the getAsObject of a Converter


Hi, I attached the getter of allcategories, as you can see I return a 
list of selectItem objects

    public List getAllCategories(){
        if(this.allCategories==null){
            this.allCategories=new ArrayList();
            this.allCategories.add(new SelectItem(new Category(),"Choose 
a category..."));
            List categories=this.eventRegistry.getCategories();
            for(Iterator iter=categories.iterator(); iter.hasNext();){
                Category category=(Category)iter.next();
                this.allCategories.add(new SelectItem(category, 
category.getTitle()));
            }
        }
        return this.allCategories;
    }

Srikanth Madarapu wrote:

>What is the return type of allCategories ?
>
>The list coming from allCategories should be a list of "SelectItem" objects, I 
>think in yours case its just a list of Strings
>
>-Srikanth
>
>
>-----Original Message-----
>From: Kostas Karadamoglou [mailto:[EMAIL PROTECTED]
>Sent: Friday, March 18, 2005 9:17 AM
>To: [email protected]
>Subject: Problem with the getAsObject of a Converter
>
>
>Hi again!!!
>
>I have another problem now, Very strange Can you suggest me a solution?
>
>I created a converter for objects of type Category in order to display 
>some Category beans in a selectOneMenu tag.
>
>I have debuged the application and I noticed a strange behaviour of JSF 
>which I cannot understand.
>Below I have the sequence explanation of the problem and the content of 
>each method and jsp fragment.
>
>1)The getAsString method works perfectly and returns the following 
>strings "0","1","2","3","4","5","6","7"
>
>2)The page is displayed properly, and I choose from the drop down menu a 
>category.
>
>2)Afterwords JSF invokes getAsObject (I think for the chosen option) 
>with the str parameter null !!!!!!!
>In this situation I return a null object (which is wrong).
>
>4)After that  when the page is redisplayed the getAsString throw an 
>Exception because of the null value
>
>JSP-------------------------------------------------------
>    <h:selectOneMenu id="selectCategory" 
>converter="#{categoryConverter}" value="#{eventHandler.selectedCategory}">
>        <f:selectItems id="allCategories" 
>value="#{eventHandler.allCategories}"/>
>    </h:selectOneMenu>
>
>getAsString------------------------------------------------
>
>    public String getAsString(FacesContext facesContext, UIComponent 
>uIComponent, Object obj) throws ConverterException {
>        String retValue=null;
>        if(obj==null)
>            throw new ConverterException("not null object of type 
>Category expected");
>        else if(obj instanceof Category){
>            Category category=(Category)obj;
>            map.put(new Integer(category.getId()), category);
>            retValue=String.valueOf(category.getId());
>        }else{
>            throw new ConverterException("object of type Category 
>expected received: "+obj.getClass().getName()+"="+obj.toString());
>        }
>        return retValue;
>    }
>
>getAsObject------------------------------------------------
>
>     public Object getAsObject(FacesContext facesContext, UIComponent 
>uIComponent, String str) throws ConverterException {
>        Category retValue=null;
>        if(str!=null){
>            try{
>                System.out.println(str);
>                Integer id=Integer.valueOf(str);
>                retValue=(Category)map.get(id);
>            }catch(Exception ex){
>                throw new ConverterException("a number formatted string 
>expected");
>            }
>           
>        }else{
>            //throw new ConverterException("a not null string expected");
>            return null;
>        }
>        return retValue;
>    }
>
>  
>

Reply via email to