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

