How does the getAsString method that you gave me have access to the _beanBaseMap?
Which is in the session scope the converter or the map?
If the converter has session scope, how do you declare it in the config.xml?
If the map is in the session scope how do you access it?


Heath Borders wrote:

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


















































Reply via email to