I see what you are saying. However there do seem to be some components/tags which handle object mapping automagically e.g. <f:setPropertyActionListener value="#{part}" target="#{order.carPart}" />
I realise that tags like setPropertyActionListener are not used with selectOneMenu/selectItems but it is used with other lists e.g. tables, and I wonder that if setPropertyActionListener can keep a map between html values and backing objects then maybe it could be done elsewhere. Kind regards Martin Simon Kitching wrote: > > Hi, > > JSF must send down to the browser a list of (label,value) pairs for the > user to select from, and then on postback the browser sends back the > value part of the selected item. The label and value must both be > strings; this is required by html. Therefore a converter of some sort is > definitely needed in order to generate appropriate "value" strings for > the items when rendering the page, and on postback the renderer must be > able to map back from the selected "value" to the appropriate item object. > > Doing this conversion automatically is clearly not possible, so an > appropriate converter must be provided. For the case where the items to > be selected from are persistent entities, the converter should generally > write out the "key" of the object, and on postback retrieve the object > using the key. > > Maybe one option is for the select* components on render to use the > index into the list of items as the value. Then on postback, as long as > the same list of objects is available then it could map back from index > to object. This would need some more thought though; for example this is > valid: > <h:selectOneMenu> > <f:selectItem ..> > <f:selectItems ..> > <f:selectItem ..> > </h:selectOneMenu> > which would complicate computing an index. And I think this > functionality would need to be in the t:selectOneMenu etc, as the > t:selectItems component is only used at render time, and is not used to > process the postback data AFAIK. Or this idea may be complete rubbish; I > haven't thought about it for long.. > > As Cagatay says, you can register a "global" converter for each of your > persistent classes within a faces-config.xml file. Then it will be used > automatically rather than you having to define the converter within each > t:selectItems or f:selectItems tag. > > Regards, > Simon > > Cagatay Civici schrieb: >> Conversions are the nature of jsf so it really makes sense to use a >> converter for t:selectItems. >> >> Generally the common solution is two write a generic jpa entity >> converter if you are using jpa with jsf. >> >> Using the converter-for-class kinda config once, you dont need to >> define the converter each time you use it. >> >> On Wed, Sep 10, 2008 at 7:22 AM, mjdenham <[EMAIL PROTECTED] >> <mailto:[EMAIL PROTECTED]>> wrote: >> >> >> I was wondering if t:selectItems could be enhanced to work without a >> converter because it has the list of all the domain objects. >> >> My code is similar to this: >> <h:selectOneMenu value="#{order.carPart}"> >> <t:selectItems value="#{carParts}" var="part" itemValue="#{part}" >> itemLabel="#{part.name <http://part.name>}" /> >> </h:selectOneMenu> >> >> public class Order { >> private CarPart carPart; >> ... >> } >> >> t:selectItems automatically generates SelectItem objects for us >> but it would >> be nice if it also allowed objects to be assigned to the actual >> selectOneMenu e.g. order.carPart value without requiring a >> Converter. Is it >> possible? >> >> I tried and get a null Converter error. >> >> Thanks >> >> Martin >> -- >> View this message in context: >> >> http://www.nabble.com/t%3AselectItems-still-seems-to-need-a-converter-tp19411254p19411254.html >> Sent from the MyFaces - Users mailing list archive at Nabble.com. >> >> > > > -- View this message in context: http://www.nabble.com/t%3AselectItems-still-seems-to-need-a-converter-tp19411254p19412905.html Sent from the MyFaces - Users mailing list archive at Nabble.com.