Ah ok, you add it explicitly to the component. Right, it was mentioned that
you can't specify a converter-by-type in JSF 1.1 for Strings.

On 3/13/07, Strittmatter, Stephan <[EMAIL PROTECTED]> wrote:

see also now at:
http://jroller.com/page/stritti?entry=jsf_stringconverter_for_null_values

-----Original Message-----
From: Strittmatter, Stephan [mailto:[EMAIL PROTECTED]
Sent: Tuesday, March 13, 2007 11:59 AM
To: MyFaces Discussion
Subject: RE: StringConversion to EMPTY_STRING

In the faces-config add something like this:

<converter>
   <converter-id>NullStringConverter</converter-id>
   <converter-class>foo.bar.NullableStringConverter</converter-class>
</converter>

Regards, Stephan

________________________________

From: Jörn Zaefferer [mailto:[EMAIL PROTECTED]
Sent: Monday, March 12, 2007 4:00 PM
To: MyFaces Discussion
Subject: Re: StringConversion to EMPTY_STRING


Could you post how you register that converter in the faces-config?
Thanks.


On 3/12/07, Strittmatter, Stephan < [EMAIL PROTECTED] <mailto:
[EMAIL PROTECTED]> > wrote:

        I started this, but then I spreaded this code everywhere in my
managed beans and it is difficult, when you use a member of a value object
directly.
        I created my own "NullableStringConverter" which is doing this Job
now assigning it in the JSF. It is not just checking for empty String, the
value has to be null-ed then also because of previous setted values:

        My converter looks like this:


          /**
           * Get the given value as String. In case of an empty String,
null is returned.
           *
           * @param value the value of the control
           * @param facesContext current facesContext
           * @param uiComponent the uicomponent providing the value
           *
           * @return the given value as String. In case of an empty
String, null is returned.
           *
           * @see javax.faces.convert.Converter#getAsObject (
javax.faces.context.FacesContext, javax.faces.component.UIComponent,
java.lang.String)
           */
          public Object getAsObject(FacesContext facesContext, UIComponent
uiComponent, String value) {

            if (facesContext == null) {
              throw new NullPointerException("facesContext");
            }
            if (uiComponent == null) {
              throw new NullPointerException("uiComponent");
            }

            return stringToValue(value);
          }

          /**
           * Convert the String to value (String or null).
           *
           * @param value the string from webcomponent
           *
           * @return the object (null if trimmed String is Empty String)
           */
          protected Object stringToValue(String value) {

            if (value != null) {
              value = value.trim();
              if (value.length() > 0) {
                return value + "";
              }
            }
            return null;
          }

          /**
           * Convert the value to String for web control.
           *
           * @param value the value to be set
           * @param facesContext current facesContext
           * @param uiComponent the uicomponent to show the value
           *
           * @return the String-converted parameter
           *
           * @see javax.faces.convert.Converter#getAsString(
javax.faces.context.FacesContext, javax.faces.component.UIComponent,
java.lang.Object)
           */
          public String getAsString(FacesContext facesContext, UIComponent
uiComponent, Object value) {

            if (facesContext == null) {
              throw new NullPointerException("facesContext");
            }
            if (uiComponent == null) {
              throw new NullPointerException("uiComponent");
            }
            return valueToString(value);
          }

          /**
           * Converts the value to HTMLized String.
           *
           * @param value the object to be converted
           *
           * @return String representation
           */
          protected String valueToString(Object value) {

            if (value == null) {
              return "";
            }
            if (value instanceof String) {
              return (String) value;
            }
            return value + "";
          }

        ________________________________

        From: Jörn Zaefferer [mailto:[EMAIL PROTECTED]
        Sent: Monday, March 12, 2007 9:29 AM
        To: MyFaces Discussion
        Subject: Re: StringConversion to EMPTY_STRING


        You could add a check for the value to set in each modifier,
something like this:

        public void setName(String newName) {
          if ( !"".equasl(newName) ) {
            name = newName;
          }
        }

        Still quite cumbersome...


        On 3/12/07, Strittmatter, Stephan <[EMAIL PROTECTED]>
wrote:

                Hi Mike,

                thanks for this info. Then I have to add my converter
manually to every
                control :-/


                -----Original Message-----
                From: Mike Kienenberger [mailto:[EMAIL PROTECTED]<mailto:
[EMAIL PROTECTED] > ]
                Sent: Thursday, March 08, 2007 7:42 PM
                To: MyFaces Discussion
                Subject: Re: StringConversion to EMPTY_STRING

                The JSF spec says that components will return the empty
string, not
                null.

                There is no way to specify a converter-by-type for String
in JSF 1.1.
                You can specify String converters for JSF 1.2.


https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id= <
https://javaserverfaces-spec-public.dev.java.net/issues/show_bug.cgi?id=>
                131

                On 3/8/07, Strittmatter, Stephan <
[EMAIL PROTECTED] > wrote:
                > Hello all,
                >
                > I had several times problems with inputText Components
which are
                having
                > Strings as input.
                > If there is nothing typed in, the BackingBean get an
EMPTY_STRING
                (""),
                > but I would expect
                > null there? Is this the common behaviour?
                >
                > For Workaround, I created my own converter adding for
every control.
                Is
                > there a way to define
                > it for all String-Controls by default on the orther
hand?
                >
                > Regards,
                >
                > Stephan
                >









Reply via email to