I'm also experiencing problems with a converter very similar to the
one posted by Jason.
In my speculation it seems to me that the string value is passed to
the getAsObject method insted of getAsString method...
2005/9/23, Sean Schofield <[EMAIL PROTECTED]>:
> Also see the brand new bug I filed (MYFACES-611) earlier today. Even
> with Mike's suggestion your ConverterExceptions may not work as
> expected b/c of this.
>
> sean
>
> On 9/23/05, Mike Kienenberger <[EMAIL PROTECTED]> wrote:
> > Instead of
> >
> > return new ConverterException("Invalid Ad Id");
> >
> > you need to use
> >
> > throw new ConverterException("Invalid Ad Id");
> >
> > On 9/23/05, Jason Nesbitt <[EMAIL PROTECTED]> wrote:
> > > I have an input text field that is bound to a long value in the backing
> > > bean. I'm using a custom converter because I want the initial value of
> > > the
> > > input text field to be the empty string and because I want to provide an
> > > error message that is more specific. However, when I enter a value in the
> > > text field that is not a valid long I get the following error.
> > > ERROR org.apache.myfaces.el.ValueBindingImpl - Cannot set
> > > value for expression '#{login.adId}' to a new value of type
> > > javax.faces.convert.ConverterException
> > > javax.servlet.jsp.el.ELException: Attempt to coerce a
> > > value of type "javax.faces.convert.ConverterException" to
> > > type "java.lang.Long"
> > >
> > > What am I doing wrong here? My input text declaration is
> > >
> > > <h:inputText size="12" maxlength="25" value="#{login.adId}"
> > > converter="#{login.adIdConverter}" />
> > >
> > > and my converter property is
> > >
> > > public Converter getAdIdConverter() {
> > > return new Converter() {
> > > public Object getAsObject(
> > > FacesContext facesContext,
> > > UIComponent uiComponent,
> > > String s) throws ConverterException {
> > > try {
> > > return new Long(s);
> > > } catch (NumberFormatException e) {
> > > return new ConverterException("Invalid Ad Id");
> > > }
> > > }
> > >
> > > public String getAsString(
> > > FacesContext facesContext,
> > > UIComponent uiComponent,
> > > Object o) throws ConverterException {
> > > Long adId = (Long) o;
> > >
> > > if (adId == null || adId.longValue() == 0) {
> > > return "";
> > > } else {
> > > return String.valueOf(adId);
> > > }
> > > }
> > > };
> > > }
> > >
> > >
> > >
> > > Thanks
> > >
> > > Jason
> > >
> >
>
--
::SammyRulez::
http://sammyprojectz.blogspot.com