The getAsString method takes 3 arguments, the FacesContex, the
UIComponent doing the conversion, and the Object value. It is
perfectly fine for a Converter to only work with certain types of
Objects.
Let's say that all your beans extend a common base class BeanBase
which has a property id.
Then, your getAsString method might look like this:
public String getAsString(FacesContext ctx, UIComponent comp, Object value) {
BeanBase myBean = (BeanBase) value;
// assuming this is a member variable that is a Map
_beanBaseMap.put(myBean.getId(), myBean);
return myBean.getId();
}
On Wed, 16 Mar 2005 22:39:54 +0000, Kostas Karadamoglou
<[EMAIL PROTECTED]> wrote:
> Very good idea!
> So I have understood from the converter's getAsString and getAsObject
> methods you call the getAsString and getAsObject respectively
> of the session scoped bean. But Is it possible to do this call? I mean
> does the converter has access to the session scope bean?
> How can I do it?
>
> Sorry for my questions but I am quite new to JSF.
>
> Heath Borders wrote:
>
> >We have a session-scoped managed bean that implements converter.
> >Whenever one of our objects goes into the getAsString method, we put
> >the object in a map keyed by its id. Then, when the getAsObject
> >method is called, we remove the object from the map and return it.
> >
> >
> >On Wed, 16 Mar 2005 22:25:56 +0000, Kostas Karadamoglou
> ><[EMAIL PROTECTED]> wrote:
> >
> >
> >>Sorry about my previous email, I didn't read it correctly!
> >>
> >>Another question if I don't bother you
> >>
> >>As far as I understood the methods getAsString and getAsObject
> >>serialize and deserialize an object isnt true?
> >>If yes then we send the object to the client and we don't keep it in the
> >>server. In your previous reply you send that
> >>MyFaces keeps the object in the memory but I cannot understand how it is
> >>done OR How I have to do it.
> >>Can you explain me this confusion that I have?
> >>
> >>Thank your in advance, Kostas
> >>
> >>Heath Borders wrote:
> >>
> >>
> >>
> >>>>It could be a good idea for JSF to store the objects in the server side
> >>>>and just submit an
> >>>>identifier to with the html. Once the request is received to the server
> >>>>JSF can indentify the
> >>>>referenced object by the identifier.
> >>>>
> >>>>
> >>>>
> >>>>
> >>>We did exactly this.
> >>>
> >>>
> >>>
> >>>
> >>>On Wed, 16 Mar 2005 21:34:26 +0000, Kostas Karadamoglou
> >>><[EMAIL PROTECTED]> wrote:
> >>>
> >>>
> >>>
> >>>
> >>>>In you previous message you said:
> >>>>
> >>>>We elected to keep
> >>>>everything in memory since we don't have that many concurrent users.
> >>>>
> >>>>I didn't understand it can you explain it?
> >>>>
> >>>>It could be a good idea for JSF to store the objects in the server side
> >>>>and just submit an
> >>>>identifier to with the html. Once the request is received to the server
> >>>>JSF can indentify the
> >>>>referenced object by the identifier.
> >>>>
> >>>>
> >>>>Heath Borders wrote:
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>>Depending on the size of your object graph, you might run into
> >>>>>performance problems doing that. It really depends on your situation,
> >>>>>but that's something you could definitely try. We elected to keep
> >>>>>everything in memory since we don't have that many concurrent users.
> >>>>>
> >>>>>
> >>>>>On Wed, 16 Mar 2005 19:37:20 +0000, Kostas Karadamoglou
> >>>>><[EMAIL PROTECTED]> wrote:
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>and what if my bean that I want to convert includes another nested
> >>>>>>objects?
> >>>>>>
> >>>>>>Is it a good idea to use libraries that serialize and deserialize object
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>from and to xml?
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>>Heath Borders wrote:
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>>getAsString converts the Object to a String and getAsObject converts
> >>>>>>>the String back to an Object.
> >>>>>>>
> >>>>>>>The behaviour should be like this:
> >>>>>>>
> >>>>>>>MyBean foo = // get a bean from somewhere
> >>>>>>>Converter converter = // get a converter that converts MyBeans.
> >>>>>>>String fooString = converter.getAsString(foo);
> >>>>>>>MyBean bar = converter.getAsObject(fooString);
> >>>>>>>
> >>>>>>>foo.equals(bar); // should return true.
> >>>>>>>
> >>>>>>>
> >>>>>>>Basically, the converter needs to convert an object to a String that
> >>>>>>>can be used later to recreate that Object. You can do this many
> >>>>>>>different ways. We have a unique id for every type of object and
> >>>>>>>store all objects in session. Our converter just returns that unique
> >>>>>>>id and pulls the objects from session using a Map.
> >>>>>>>
> >>>>>>>
> >>>>>>>On Wed, 16 Mar 2005 16:49:25 +0000, Kostas Karadamoglou
> >>>>>>><[EMAIL PROTECTED]> wrote:
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>>Hi again thank you for your reply,
> >>>>>>>>I am new to JSF so I need some information on how to create
> >>>>>>>>converters.
> >>>>>>>>Do you know any site one the internet that has such information?
> >>>>>>>>
> >>>>>>>>I have already looked on the internet but I only foound converters for
> >>>>>>>>String not for
> >>>>>>>>other classes.
> >>>>>>>>
> >>>>>>>>Can you give directions on how to implement the getAsString and
> >>>>>>>>getAsObject ?
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>Heath Borders wrote:
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>>Yes, you must write a converter for Category.
> >>>>>>>>>
> >>>>>>>>>The object you pass as the 'value' of your SelectItem objects should
> >>>>>>>>>be of a type that is assignment-compatible with the property you've
> >>>>>>>>>bound to your component.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>On Wed, 16 Mar 2005 10:05:13 +0000, Kostas Karadamoglou
> >>>>>>>>><[EMAIL PROTECTED]> wrote:
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>>Hello I have a problem with the selectItems tag
> >>>>>>>>>>Bellow I have the method that brings the value attribute of the tag:
> >>>>>>>>>>
> >>>>>>>>>>public List getCategories() {
> >>>>>>>>>> ArrayList retValue = new ArrayList();
> >>>>>>>>>> retValue.add(new SelectItem("","Choose a category..."));
> >>>>>>>>>> for(Iterator iter=this.eventRegistry.getCategories().iterator();
> >>>>>>>>>>iter.hasNext();){
> >>>>>>>>>> Category category=(Category)iter.next();
> >>>>>>>>>> retValue.add(new SelectItem(category,category.getTitle()));
> >>>>>>>>>> }
> >>>>>>>>>> return retValue;
> >>>>>>>>>>}
> >>>>>>>>>>
> >>>>>>>>>>When I run the web application I get the following exception:
> >>>>>>>>>>
> >>>>>>>>>>javax.faces.FacesException: There is no registered converter for
> >>>>>>>>>>class
> >>>>>>>>>>essex.cc403.hbeans.Category
> >>>>>>>>>>
> >>>>>>>>>>Do I really need to write a converter for the Category? Can I
> >>>>>>>>>>avoid it?
> >>>>>>>>>>Can you axplain me what I have to do because I am not familiar with
> >>>>>>>>>>JSF
> >>>>>>>>>>
> >>>>>>>>>>Thank you in advanec, kostas
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> >
> >
> >
> >
>
>
--
-Heath Borders-Wing
[EMAIL PROTECTED]