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