Here's another option.  Rather than making the converter a faces
managed bean, you can make it an instance variable of yoru event
handler.  Try that and see if it works better.


On Fri, 18 Mar 2005 17:30:41 +0000, Kostas Karadamoglou
<[EMAIL PROTECTED]> wrote:
> Couldn't it be consindered as a bug?
> Does anyone eles have the same problem?
> 
> Heath Borders wrote:
> 
> >oh.  Sorry I misunderstood your first email.
> >
> >That means that there's something wrong with the selectOneMenu or something.
> >
> >
> >On Fri, 18 Mar 2005 16:22:42 +0000, Kostas Karadamoglou
> ><[EMAIL PROTECTED]> wrote:
> >
> >
> >>Yes but how can JSF call the getAsObject method of the converter with
> >>the str parameter equals to null !!!
> >>
> >>I checked the generated code and the all the option tags in the drop
> >>down menu have a value ("1","2","3","4","5" and so on)
> >>So how jsf returns a null string? thats the problem. :(
> >>Heath Borders wrote:
> >>
> >>
> >>
> >>>No, you don't want to do that.  Otherwise, the category object will
> >>>not be properly set in his setter.  The problem is definitely with
> >>>your converter.  My guess is that its getting re-created between
> >>>requests, and thus the map is getting cleared.  I couldn't tell you
> >>>why that's happening, though.
> >>>
> >>>
> >>>On Fri, 18 Mar 2005 11:05:23 -0500, Srikanth Madarapu
> >>><[EMAIL PROTECTED]> wrote:
> >>>
> >>>
> >>>
> >>>
> >>>>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;
> >>>>>  }
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> >
> >
> >
> >
> 
> 


-- 
-Heath Borders-Wing
[EMAIL PROTECTED]

Reply via email to