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: [email protected] [mailto:[email protected]] 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
<[email protected]> 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