-----Original Message-----
From: Jesse Alexander (KBSA 21) 
Sent: Thursday, February 02, 2006 8:24 AM
To: MyFaces Development
Subject: RE: Any way to disable/sidestep converters/validators while
processing a ActionListener event?

        Hello:
         
        We would like to be able to handle the ActionListener event
without converters
        and validators (associated with fields on the form) generating
error messages.
        When the form is submitted, we do want the field converters and
validators to 
        generate appropriate error messages.  Is there a way to
disable/sidestep 
        converters and validators while processing an ActionListener
event?  Further
        details are provided below.

        The situation:
        --------------
        1. Have a date input field
        2. Have a link next to the input field that is used to set a
default value in the date field.
           An ActionListener is associated with the link.
        3. When the link is clicked, the form is posted and the
ActionListener method is invoked.  This 
           method sets and default value in the date field and returns.
        4. Since it is an ActionListener event, JSP redisplays the same
page.

A well known usecase...

        
        Problem:
        --------
        1. If an illegal date format has been entered into the date
field before clicking the link,
           the converter on the date field detects an error.  JSF
redisplays the page with the
           error message. 
        2. Even if the date field is empty or has a legal value, other
fields on the form can have
           bad values such that their converter or validator will detect
an error.  Again, JSP 
           redisplays the page with the error message. 

        
        UI Goal:  Have the link set the default value and ignore any
illegal fields on the form.
        -------   At this point in time, the user in interested in
defaulting the date field, not
                  validating fields.  The fields will be validated when
the form is submitted. 

        
        Current Solution:
        -----------------
        1. The link has: immediate="true" set.
        2. ActionListener associated with link runs early in the JSF
lifecycle. This method
           accesses the component and sets the date value by calling
<component>.setSubmittedValue() 
        3  ActionListener method then terminates JSF lifecyle
        4. JSF redisplays page.  Since the date component's submitted
value has been modified, the
           default value now appears in the date field.

What we found is that some fields would not show the values the user had
entered before...

        
        Why We are Looking for a Better Solution:
        -----------------------------------------
        We have other situations where the ActionListener method needs
access to several fields
        on the form. These fields are currently not available to the
ActionListener since it is 
        invoked early in the JSF lifecycle.

        If the converters/validators could be disabled, the
ActionListener method could run
        at the normal place in the JSF lifecycle.  It is understood that
JSF could not do the data
        binding for any fields where the converter fails.  But all other
fields would be properly 
        bound and accessible to the AtionListener method.

You might have a look at the OptionalValidators described here:
<http://wiki.apache.org/myfaces/OptionalValidationFramework>

Comments, testcases and problem-reports are welcome.

regards
Alexander
         
         
        Thanks for your time.
         
        Jay

Reply via email to