I've tried this, but I always get an NPE when I have an own converter and the 
"Select Color Popup" opens:

Caused by: java.lang.NullPointerException
        at 
org.apache.myfaces.trinidadinternal.renderkit.core.pages.ColorPickerJSP._getConverter(ColorPickerJSP.java:147)
        at 
org.apache.myfaces.trinidadinternal.renderkit.core.pages.ColorPickerJSP.service(ColorPickerJSP.java:86)
        at 
org.apache.myfaces.trinidadinternal.renderkit.core.pages.GenericEntry._service(GenericEntry.java:244)
        at 
org.apache.myfaces.trinidadinternal.renderkit.core.pages.GenericEntry.service(GenericEntry.java:228)
        at 
org.apache.myfaces.trinidadinternal.renderkit.core.pages.GenericEntry.renderView(GenericEntry.java:109)
        at 
org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:178)
        at 
org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
        at 
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)
        ... 27 more

My XHTML:
                                        <tr:inputColor label="BGColor" 
value="#{data['editItem'].headerBgColor}">
                                                <tcc:colorStringConverter />
                                        </tr:inputColor>

My Converter:

import java.awt.*;

import javax.faces.component.*;
import javax.faces.context.*;
import javax.faces.convert.*;

import org.apache.myfaces.trinidad.convert.*;

public class ColorStringConverter implements Converter {
        
        private static final ColorConverter TR_CONVERTER = new ColorConverter();

        public Object getAsObject(FacesContext context, UIComponent component, 
String value) {
                Color color = (Color) TR_CONVERTER.getAsObject(context, 
component, value);
                return getAsString(context, component, color);
        }

        public String getAsString(FacesContext context, UIComponent component, 
Object value) {
                return TR_CONVERTER.getAsString(context, component, value);
        }
}


BTW, a bit of topic, but the "Select Color Popup" opens in a new browser 
window. I have 
        <context-param>
                
<param-name>org.apache.myfaces.trinidad.ENABLE_LIGHTWEIGHT_DIALOGS</param-name>
                <param-value>true</param-value>
        </context-param>
in my web.xml.
Would be nice to see the popup use the lightweight dialogs framework at some 
time in the future.

Best regards
Markus

-----Ursprüngliche Nachricht-----
Von: mwessend...@gmail.com [mailto:mwessend...@gmail.com] Im Auftrag von 
Matthias Wessendorf
Gesendet: Mittwoch, 22. April 2009 09:44
An: MyFaces Discussion
Betreff: Re: [Trinidad] Saving an inputColor to an EJB backing bean

On Wed, Apr 22, 2009 at 9:36 AM, Döring Markus
<markus.doer...@tcc-products.de> wrote:
> Hi all,
>
>
>
> my goal is to have an EJB backing bean like the following:
>
>
>
> @Entity
>
> public class EntityBean {
>
>                 //... id stuff and else properties
>
>
>
>                 private String color;
>
>
>
>                 public String getColor() {
>
>                                 return color;
>
>                 }
>
>                 public void setColor(String color) {
>
>                                this.color = color;
>
>                 }
>
> }
>
>
>
> and directly getting / setting the value from / to and <tr:inputColor>
>
>
>
> <ui:composition>
>
> <tr:panelFormLayout>
>
> <tr:inputColor label="Select color" value="#{entity.color}">
>
> </tr:panelFormLayout>
>
> </ui:composition>
>
>
>
> Is is in some possible?
>
> I already tried it with the <tr:convertColor> converter, but the value that
> is passed to the entity is always a java.awt.color instance (causing an
> argument type mismatch on submit of the form).
>
> One way I can think of is to put @Transient getter / setter in the
> EntityBean that convert from color to string and vice versa. But this would
> be ugly because there will be more than one color in the EntityBean what
> would result in A LOT OF duplicated getter/setter just for converting stuff.

have you tried a custom converter that internally uses the Trinidad
ColorConverter
but returns a String of the java.awt.Color ?

Like:

getAsObject(...)
{
...
Color c = ctrinidadColorConv.getAsObject(...);
return c.toString();
}

-M

>
>
>
> Any easy way to handle this?
>
>
>
> Thanks for help
>
> Markus
>
>
>
> PS. I'm using JBoss 4.2.2, Myfaces 1.1.5, Trinindad 1.0.7, Facelets 1.1.13



-- 
Matthias Wessendorf

blog: http://matthiaswessendorf.wordpress.com/
sessions: http://www.slideshare.net/mwessendorf
twitter: http://twitter.com/mwessendorf

Reply via email to