You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Matthias Kahlau <mk...@web.de> on 2006/01/05 19:04:28 UTC

Custom validator invoked multiple times in process validations phase

Hi!


I have a problem with a validator, this time with a custom validator used as
custom JSP action inside a JSF page. The validator is a "laterThan"
validator, which compares two dates when I try to save the form.

I use the following tag only one time in the JSP page, but the validator is
invoked 5 times when a validation error occurs:

<custom:validateLater than="umfragebeginn" />


You can see the multiple invocations in the logging output from the process
validations phase (entering validate()...leaving validate()):


2006-01-05 18:49:05,031 DEBUG [org.apache.myfaces.lifecycle.LifecycleImpl]
entering processValidations in org.apache.myfaces.lifecycle.LifecycleImpl
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
entering/leaving isLehrevalChosen()
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
entering/leaving isLehrevalChosen()
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
entering/leaving isMitarbeiterBefrChosen()
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
entering/leaving isMitarbeiterBefrChosen()
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
entering/leaving isLehrevalChosen()
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
entering/leaving isMitarbeiterBefrChosen()
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
entering/leaving isLehrevalChosen()
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
entering/leaving isLehrevalChosen()
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] entering validate()
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] entering formatDate()
2006-01-05 18:49:05,031 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] date = Thu Jan 05 01:00:00 CET 2006
2006-01-05 18:49:05,031 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] formatted date (converter) = 05.01.06
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] leaving formatDate()
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getParameterisedErrorMessage()
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getParameterisedMessageFromBundle()
2006-01-05 18:49:05,031 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
Parameter: params=[Ljava.lang.Object;@129714a,
key=validator.laterThan.notLater
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getMessageFromBundle()
2006-01-05 18:49:05,031 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
validator.laterThan.notLater
2006-01-05 18:49:05,031 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum {0} folgt.
2006-01-05 18:49:05,031 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getMessageFromBundle()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
folgt.
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getParameterisedMessageFromBundle()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getParameterisedErrorMessage()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] error msg = javax.faces.application.FacesMessage@1ccd7d3
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] leaving validate()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] entering validate()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] entering formatDate()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] date = Thu Jan 05 01:00:00 CET 2006
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] formatted date (converter) = 05.01.06
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] leaving formatDate()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getParameterisedErrorMessage()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getParameterisedMessageFromBundle()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
Parameter: params=[Ljava.lang.Object;@16d64b9,
key=validator.laterThan.notLater
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getMessageFromBundle()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
validator.laterThan.notLater
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum {0} folgt.
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getMessageFromBundle()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
folgt.
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getParameterisedMessageFromBundle()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getParameterisedErrorMessage()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] error msg = javax.faces.application.FacesMessage@efaf71
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] leaving validate()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] entering validate()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] entering formatDate()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] date = Thu Jan 05 01:00:00 CET 2006
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] formatted date (converter) = 05.01.06
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] leaving formatDate()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getParameterisedErrorMessage()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getParameterisedMessageFromBundle()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
Parameter: params=[Ljava.lang.Object;@1e72538,
key=validator.laterThan.notLater
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getMessageFromBundle()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
validator.laterThan.notLater
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum {0} folgt.
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getMessageFromBundle()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
folgt.
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getParameterisedMessageFromBundle()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getParameterisedErrorMessage()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] error msg = javax.faces.application.FacesMessage@3ca362
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] leaving validate()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] entering validate()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] entering formatDate()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] date = Thu Jan 05 01:00:00 CET 2006
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] formatted date (converter) = 05.01.06
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] leaving formatDate()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getParameterisedErrorMessage()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getParameterisedMessageFromBundle()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
Parameter: params=[Ljava.lang.Object;@10a9d01,
key=validator.laterThan.notLater
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getMessageFromBundle()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
validator.laterThan.notLater
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum {0} folgt.
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getMessageFromBundle()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
folgt.
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getParameterisedMessageFromBundle()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getParameterisedErrorMessage()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] error msg = javax.faces.application.FacesMessage@1c9d73e
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] leaving validate()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] entering validate()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] entering formatDate()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] date = Thu Jan 05 01:00:00 CET 2006
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] formatted date (converter) = 05.01.06
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] leaving formatDate()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getParameterisedErrorMessage()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getParameterisedMessageFromBundle()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
Parameter: params=[Ljava.lang.Object;@52578c,
key=validator.laterThan.notLater
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
getMessageFromBundle()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
validator.laterThan.notLater
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum {0} folgt.
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getMessageFromBundle()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
folgt.
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getParameterisedMessageFromBundle()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
getParameterisedErrorMessage()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] error msg = javax.faces.application.FacesMessage@1f1e0e9
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
r] leaving validate()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
entering/leaving isSonstUmfragenChosen()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.UmfrVorlFormValid
atorBacking] entering validateErgPubEnde()
2006-01-05 18:49:05,046 DEBUG
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.UmfrVorlFormValid
atorBacking] AuswSicherheit: Umfragemanager only - no validation necessary
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.utils.validator.UmfrVorlFormValid
atorBacking] leaving validateErgPubEnde()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
entering/leaving isSonstUmfragenChosen()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
entering/leaving isCreating()
2006-01-05 18:49:05,046 INFO
[de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
entering/leaving isLehrevalChosen()
2006-01-05 18:49:05,046 DEBUG [org.apache.myfaces.lifecycle.LifecycleImpl]
exiting from lifecycle.execute in processValidations because
getRenderResponse is true from one of the after listeners
2006-01-05 18:49:05,046 DEBUG [org.apache.myfaces.lifecycle.LifecycleImpl]
entering renderResponse in org.apache.myfaces.lifecycle.LifecycleImpl
2006-01-05 18:49:05,046 DEBUG
[org.apache.myfaces.application.jsp.JspViewHandlerImpl] Dispatching to
/Management/UmfrVorlForm.jsp


The Problem is furthermore, that the h:messages, which outputs the error
summary of this page, does also print out the summary 5 times, so that the
user is directly confronted with this misbehaviour.

As I could observe, the multiple invocations or at least the multiple error
message print-outs must have sth. to do with the amount of visits of the
page. Each time a leave the page to a subform (immediate action), and than
return to the page and try to save the form, the error message is printed
out one more time.

What I also could see from the logging output of the rendered view, that one
validator tag (which is used only one time per component) is printed many
times, regardless of the validator type (built-in or custom), e. g.:

Custom validator:

<org.apache.myfaces.custom.calendar.HtmlInputCalendar id="umfrageende"
forceIdIndex="true" accesskey="NULL" addResources="true" alt="NULL"
converter="javax.faces.convert.DateTimeConverter@19b87d3"
currentDayCellClass="currentDayCell" dayCellClass="NULL" dir="NULL"
disabled="#{UmfrVorlFormBacking.vorlageAndererAutor}"
enabledOnUserRole="NULL" family="javax.faces.Input" immediate="false"
lang="NULL" localValue="NULL" localValueSet="false" maxlength="-2147483648"
monthYearRowClass="yearMonthHeader" onblur="NULL" onchange="NULL"
onclick="NULL" ondblclick="NULL" onfocus="NULL" onkeydown="NULL"
onkeypress="NULL" onkeyup="NULL" onmousedown="NULL" onmousemove="NULL"
onmouseout="NULL" onmouseover="NULL" onmouseup="NULL" onselect="NULL"
popupButtonString="NULL" popupDateFormat="NULL" popupGotoString="NULL"
popupScrollLeftMessage="NULL" popupScrollRightMessage="NULL"
popupSelectDateMessage="NULL" popupSelectMonthMessage="NULL"
popupSelectYearMessage="NULL" popupTodayString="Heute ist"
popupWeekString="Wo" readonly="#{UmfrVorlFormBacking.vorlageAndererAutor}"
renderAsPopup="true" renderPopupButtonAsImage="true" rendered="true"
rendererType="org.apache.myfaces.Calendar" rendersChildren="false"
required="true" size="-2147483648" style="NULL" styleClass="NULL"
submittedValue="05.01.06" tabindex="NULL" title="NULL" transient="false"
valid="false" validator="NULL"
value="#{UmfrVorlFormBacking.dfVorlageBasis.umfrEnde}"
valueChangeListener="NULL" visibleOnUserRole="NULL"
weekRowClass="weekHeader">
        <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
Validator/>
        <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
Validator/>
        <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
Validator/>
        <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
Validator/>
        <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
Validator/>
      </org.apache.myfaces.custom.calendar.HtmlInputCalendar>


Or built-in validator:

<html.ext.HtmlInputText id="kennwort" forceIdIndex="true" accesskey="NULL"
alt="NULL" converter="NULL" dir="NULL" disabled="false"
displayValueOnly="false" displayValueOnlyStyle="NULL"
displayValueOnlyStyleClass="NULL" enabledOnUserRole="NULL"
family="javax.faces.Input" immediate="false" lang="NULL" localValue=""
localValueSet="true" maxlength="256" onblur="NULL" onchange="NULL"
onclick="NULL" ondblclick="NULL" onfocus="NULL" onkeydown="NULL"
onkeypress="NULL" onkeyup="NULL" onmousedown="NULL" onmousemove="NULL"
onmouseout="NULL" onmouseover="NULL" onmouseup="NULL" onselect="NULL"
readonly="#{UmfrVorlFormBacking.vorlageAndererAutor}" rendered="true"
rendererType="org.apache.myfaces.Text" rendersChildren="false"
required="false" setDisplayValueOnly="false" size="50" style="NULL"
styleClass="NULL" submittedValue="NULL" tabindex="NULL" title="Textfeld zur
Eingabe des Kennworts" transient="false" valid="true" validator="NULL"
value="#{UmfrVorlFormBacking.dfVorlageBasis.kennwort}"
valueChangeListener="NULL" visibleOnUserRole="NULL">
          <javax.faces.validator.LengthValidator/>
          <javax.faces.validator.LengthValidator/>
          <javax.faces.validator.LengthValidator/>
          <javax.faces.validator.LengthValidator/>
          <javax.faces.validator.LengthValidator/>
        </html.ext.HtmlInputText>


How can I manage this? (The problem reminds me of my post send on Tuesday,
which might also be caused by multiple invocations of a validator, but that
validator was a built-in one: Please see
http://www.mail-archive.com/users@myfaces.apache.org/msg14355.html)



Regards,

Matthias


Re: Custom validator invoked multiple times in process validations phase

Posted by Mike Kienenberger <mk...@gmail.com>.
Matthias,

I haven't seen this behavior, even with custom validators.

You're somehow preserving the messages between page requests, but
that's not normally the case, even when using immediate.

I don't think the behavior is caused by validators -- they're just
demonstrating the issue by generating messages.

It's hard to comment any further.   I recommend trying to create as
simple of an example that causes this problem as possible.  In the
process you'll probably discover what filter, servlet, phase listener,
backing bean, or whatever, is causing the problem.

On 1/5/06, Matthias Kahlau <mk...@web.de> wrote:
> Thanks Mike,
>
>
> but the custom validator is the source of the problem (it's implemented by
> following an example of the JSF book of Hans Bergsten). I implemented it
> before I've heared about the sandbox component, and it works, so I'll keep
> hold of it at the moment.
>
> I just tried the scenario with a built-in validator (f:validateLongRange),
> and it showed the same misbehaviour:
>
> <t:inputText id="ergPubBeginnAnzahl"
>           binding="#{UmfrVorlFormBacking.inputTextErgPubBegAnzahl}"
>           value="#{UmfrVorlFormBacking.dfVorlageBasis.ergPubAnzahl}"
>           disabled="false"
>           required="false"
>           readonly="#{UmfrVorlFormBacking.vorlageAndererAutor}"
>           maxlength="4"
>           size="4"
>           title="Textfeld zur Eingabe der Ergebnisanzahl"
>           immediate="false">
>         <f:validateLongRange minimum="1" maximum="9999" />
> </t:inputText>
>
>
> When I try to save the form the first time with only one validation error
> caused by entering "0" in that inputText, one error message summary is shown
> in the following h:messages tag at the top of the page:
>
> <h:messages layout="table" globalOnly="false" showSummary="true"
>       showDetail="false" errorClass="error" fatalClass="error" />
>
>
> When I leave the page to a subform with an immediate action (not the
> immediate save action), and then return to the first page and try to save
> it, two error message summaries are printed in the h:messages for the one
> validation error.
>
> If I leave the page again to the subform and then return and press save,
> three error message summaries are printed in the h:messages for the one
> validation error, and so on. There's always one error message added to the
> list of error messages...
>
>
> Is this behaviour intended? How can I prevent this?
>
> I can extend that question and ask, how can I prevent duplicates of error
> message summaries to be printed out by the h:messages component, because
> other use cases are possible where some additional validation errors occur
> on the same page, and all have the same error message summary. I think one
> error message summary of one type would be sufficient... And that's a
> problem you all might face sometime...
>
> (I already thought of a phase listener the removes duplicates from the error
> message queue ;) ...)
>
>
> Regards,
>
> Matthias
>
> > -----Ursprüngliche Nachricht-----
> > Von: users-return-14765-mkahlau=web.de@myfaces.apache.org
> > [mailto:users-return-14765-mkahlau=web.de@myfaces.apache.org]Im Auftrag
> > von Mike Kienenberger
> > Gesendet: Donnerstag, 5. Januar 2006 20:43
> > An: MyFaces Discussion
> > Betreff: Re: Custom validator invoked multiple times in process
> > validations phase
> >
> >
> > Hi Matthias,
> >
> > I don't know the answer to your problem, but there's a
> > sandbox:validateCompareTo that you can use instead of creating your
> > own custom validator.   I already use it to compare two dates:
> >
> > <sandbox:validateCompareTo operator="ge" for="openDateInput"
> > message="Date initiated must be before requested completion date."/>
> >
> >
> > On 1/5/06, Matthias Kahlau <mk...@web.de> wrote:
> > > Hi!
> > >
> > >
> > > I have a problem with a validator, this time with a custom
> > validator used as
> > > custom JSP action inside a JSF page. The validator is a "laterThan"
> > > validator, which compares two dates when I try to save the form.
> > >
> > > I use the following tag only one time in the JSP page, but the
> > validator is
> > > invoked 5 times when a validation error occurs:
> > >
> > > <custom:validateLater than="umfragebeginn" />
> > >
> > >
> > > You can see the multiple invocations in the logging output from
> > the process
> > > validations phase (entering validate()...leaving validate()):
> > >
> > >
> > > 2006-01-05 18:49:05,031 DEBUG
> > [org.apache.myfaces.lifecycle.LifecycleImpl]
> > > entering processValidations in
> > org.apache.myfaces.lifecycle.LifecycleImpl
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > > entering/leaving isLehrevalChosen()
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > > entering/leaving isLehrevalChosen()
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > > entering/leaving isMitarbeiterBefrChosen()
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > > entering/leaving isMitarbeiterBefrChosen()
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > > entering/leaving isLehrevalChosen()
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > > entering/leaving isMitarbeiterBefrChosen()
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > > entering/leaving isLehrevalChosen()
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > > entering/leaving isLehrevalChosen()
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] entering validate()
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] entering formatDate()
> > > 2006-01-05 18:49:05,031 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] date = Thu Jan 05 01:00:00 CET 2006
> > > 2006-01-05 18:49:05,031 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] formatted date (converter) = 05.01.06
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] leaving formatDate()
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getParameterisedErrorMessage()
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getParameterisedMessageFromBundle()
> > > 2006-01-05 18:49:05,031 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> > > Parameter: params=[Ljava.lang.Object;@129714a,
> > > key=validator.laterThan.notLater
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getMessageFromBundle()
> > > 2006-01-05 18:49:05,031 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> > > validator.laterThan.notLater
> > > 2006-01-05 18:49:05,031 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum
> > {0} folgt.
> > > 2006-01-05 18:49:05,031 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getMessageFromBundle()
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> > > folgt.
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getParameterisedMessageFromBundle()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getParameterisedErrorMessage()
> > > 2006-01-05 18:49:05,046 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] error msg = javax.faces.application.FacesMessage@1ccd7d3
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] leaving validate()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] entering validate()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] entering formatDate()
> > > 2006-01-05 18:49:05,046 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] date = Thu Jan 05 01:00:00 CET 2006
> > > 2006-01-05 18:49:05,046 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] formatted date (converter) = 05.01.06
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] leaving formatDate()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getParameterisedErrorMessage()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getParameterisedMessageFromBundle()
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> > > Parameter: params=[Ljava.lang.Object;@16d64b9,
> > > key=validator.laterThan.notLater
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getMessageFromBundle()
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> > > validator.laterThan.notLater
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum
> > {0} folgt.
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getMessageFromBundle()
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> > > folgt.
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getParameterisedMessageFromBundle()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getParameterisedErrorMessage()
> > > 2006-01-05 18:49:05,046 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] error msg = javax.faces.application.FacesMessage@efaf71
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] leaving validate()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] entering validate()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] entering formatDate()
> > > 2006-01-05 18:49:05,046 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] date = Thu Jan 05 01:00:00 CET 2006
> > > 2006-01-05 18:49:05,046 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] formatted date (converter) = 05.01.06
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] leaving formatDate()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getParameterisedErrorMessage()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getParameterisedMessageFromBundle()
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> > > Parameter: params=[Ljava.lang.Object;@1e72538,
> > > key=validator.laterThan.notLater
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getMessageFromBundle()
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> > > validator.laterThan.notLater
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum
> > {0} folgt.
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getMessageFromBundle()
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> > > folgt.
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getParameterisedMessageFromBundle()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getParameterisedErrorMessage()
> > > 2006-01-05 18:49:05,046 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] error msg = javax.faces.application.FacesMessage@3ca362
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] leaving validate()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] entering validate()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] entering formatDate()
> > > 2006-01-05 18:49:05,046 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] date = Thu Jan 05 01:00:00 CET 2006
> > > 2006-01-05 18:49:05,046 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] formatted date (converter) = 05.01.06
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] leaving formatDate()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getParameterisedErrorMessage()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getParameterisedMessageFromBundle()
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> > > Parameter: params=[Ljava.lang.Object;@10a9d01,
> > > key=validator.laterThan.notLater
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getMessageFromBundle()
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> > > validator.laterThan.notLater
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum
> > {0} folgt.
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getMessageFromBundle()
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> > > folgt.
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getParameterisedMessageFromBundle()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getParameterisedErrorMessage()
> > > 2006-01-05 18:49:05,046 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] error msg = javax.faces.application.FacesMessage@1c9d73e
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] leaving validate()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] entering validate()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] entering formatDate()
> > > 2006-01-05 18:49:05,046 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] date = Thu Jan 05 01:00:00 CET 2006
> > > 2006-01-05 18:49:05,046 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] formatted date (converter) = 05.01.06
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] leaving formatDate()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getParameterisedErrorMessage()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getParameterisedMessageFromBundle()
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> > > Parameter: params=[Ljava.lang.Object;@52578c,
> > > key=validator.laterThan.notLater
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> >  entering
> > > getMessageFromBundle()
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> > > validator.laterThan.notLater
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum
> > {0} folgt.
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getMessageFromBundle()
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> > > folgt.
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getParameterisedMessageFromBundle()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > > getParameterisedErrorMessage()
> > > 2006-01-05 18:49:05,046 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] error msg = javax.faces.application.FacesMessage@1f1e0e9
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> > anValidato
> > > r] leaving validate()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > > entering/leaving isSonstUmfragenChosen()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.UmfrVor
> > lFormValid
> > > atorBacking] entering validateErgPubEnde()
> > > 2006-01-05 18:49:05,046 DEBUG
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.UmfrVor
> > lFormValid
> > > atorBacking] AuswSicherheit: Umfragemanager only - no
> > validation necessary
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.utils.validator.UmfrVor
> > lFormValid
> > > atorBacking] leaving validateErgPubEnde()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > > entering/leaving isSonstUmfragenChosen()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > > entering/leaving isCreating()
> > > 2006-01-05 18:49:05,046 INFO
> > >
> > [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > > entering/leaving isLehrevalChosen()
> > > 2006-01-05 18:49:05,046 DEBUG
> > [org.apache.myfaces.lifecycle.LifecycleImpl]
> > > exiting from lifecycle.execute in processValidations because
> > > getRenderResponse is true from one of the after listeners
> > > 2006-01-05 18:49:05,046 DEBUG
> > [org.apache.myfaces.lifecycle.LifecycleImpl]
> > > entering renderResponse in org.apache.myfaces.lifecycle.LifecycleImpl
> > > 2006-01-05 18:49:05,046 DEBUG
> > > [org.apache.myfaces.application.jsp.JspViewHandlerImpl] Dispatching to
> > > /Management/UmfrVorlForm.jsp
> > >
> > >
> > > The Problem is furthermore, that the h:messages, which outputs the error
> > > summary of this page, does also print out the summary 5 times,
> > so that the
> > > user is directly confronted with this misbehaviour.
> > >
> > > As I could observe, the multiple invocations or at least the
> > multiple error
> > > message print-outs must have sth. to do with the amount of visits of the
> > > page. Each time a leave the page to a subform (immediate
> > action), and than
> > > return to the page and try to save the form, the error message
> > is printed
> > > out one more time.
> > >
> > > What I also could see from the logging output of the rendered
> > view, that one
> > > validator tag (which is used only one time per component) is
> > printed many
> > > times, regardless of the validator type (built-in or custom), e. g.:
> > >
> > > Custom validator:
> > >
> > > <org.apache.myfaces.custom.calendar.HtmlInputCalendar id="umfrageende"
> > > forceIdIndex="true" accesskey="NULL" addResources="true" alt="NULL"
> > > converter="javax.faces.convert.DateTimeConverter@19b87d3"
> > > currentDayCellClass="currentDayCell" dayCellClass="NULL" dir="NULL"
> > > disabled="#{UmfrVorlFormBacking.vorlageAndererAutor}"
> > > enabledOnUserRole="NULL" family="javax.faces.Input" immediate="false"
> > > lang="NULL" localValue="NULL" localValueSet="false"
> > maxlength="-2147483648"
> > > monthYearRowClass="yearMonthHeader" onblur="NULL" onchange="NULL"
> > > onclick="NULL" ondblclick="NULL" onfocus="NULL" onkeydown="NULL"
> > > onkeypress="NULL" onkeyup="NULL" onmousedown="NULL" onmousemove="NULL"
> > > onmouseout="NULL" onmouseover="NULL" onmouseup="NULL" onselect="NULL"
> > > popupButtonString="NULL" popupDateFormat="NULL" popupGotoString="NULL"
> > > popupScrollLeftMessage="NULL" popupScrollRightMessage="NULL"
> > > popupSelectDateMessage="NULL" popupSelectMonthMessage="NULL"
> > > popupSelectYearMessage="NULL" popupTodayString="Heute ist"
> > > popupWeekString="Wo"
> > readonly="#{UmfrVorlFormBacking.vorlageAndererAutor}"
> > > renderAsPopup="true" renderPopupButtonAsImage="true" rendered="true"
> > > rendererType="org.apache.myfaces.Calendar" rendersChildren="false"
> > > required="true" size="-2147483648" style="NULL" styleClass="NULL"
> > > submittedValue="05.01.06" tabindex="NULL" title="NULL" transient="false"
> > > valid="false" validator="NULL"
> > > value="#{UmfrVorlFormBacking.dfVorlageBasis.umfrEnde}"
> > > valueChangeListener="NULL" visibleOnUserRole="NULL"
> > > weekRowClass="weekHeader">
> > >
> > <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> > > Validator/>
> > >
> > <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> > > Validator/>
> > >
> > <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> > > Validator/>
> > >
> > <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> > > Validator/>
> > >
> > <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> > > Validator/>
> > >       </org.apache.myfaces.custom.calendar.HtmlInputCalendar>
> > >
> > >
> > > Or built-in validator:
> > >
> > > <html.ext.HtmlInputText id="kennwort" forceIdIndex="true"
> > accesskey="NULL"
> > > alt="NULL" converter="NULL" dir="NULL" disabled="false"
> > > displayValueOnly="false" displayValueOnlyStyle="NULL"
> > > displayValueOnlyStyleClass="NULL" enabledOnUserRole="NULL"
> > > family="javax.faces.Input" immediate="false" lang="NULL" localValue=""
> > > localValueSet="true" maxlength="256" onblur="NULL" onchange="NULL"
> > > onclick="NULL" ondblclick="NULL" onfocus="NULL" onkeydown="NULL"
> > > onkeypress="NULL" onkeyup="NULL" onmousedown="NULL" onmousemove="NULL"
> > > onmouseout="NULL" onmouseover="NULL" onmouseup="NULL" onselect="NULL"
> > > readonly="#{UmfrVorlFormBacking.vorlageAndererAutor}" rendered="true"
> > > rendererType="org.apache.myfaces.Text" rendersChildren="false"
> > > required="false" setDisplayValueOnly="false" size="50" style="NULL"
> > > styleClass="NULL" submittedValue="NULL" tabindex="NULL"
> > title="Textfeld zur
> > > Eingabe des Kennworts" transient="false" valid="true" validator="NULL"
> > > value="#{UmfrVorlFormBacking.dfVorlageBasis.kennwort}"
> > > valueChangeListener="NULL" visibleOnUserRole="NULL">
> > >           <javax.faces.validator.LengthValidator/>
> > >           <javax.faces.validator.LengthValidator/>
> > >           <javax.faces.validator.LengthValidator/>
> > >           <javax.faces.validator.LengthValidator/>
> > >           <javax.faces.validator.LengthValidator/>
> > >         </html.ext.HtmlInputText>
> > >
> > >
> > > How can I manage this? (The problem reminds me of my post send
> > on Tuesday,
> > > which might also be caused by multiple invocations of a
> > validator, but that
> > > validator was a built-in one: Please see
> > > http://www.mail-archive.com/users@myfaces.apache.org/msg14355.html)
> > >
> > >
> > >
> > > Regards,
> > >
> > > Matthias
> > >
> > >
>
>

AW: Custom validator invoked multiple times in process validations phase

Posted by Matthias Kahlau <mk...@web.de>.
Thanks Mike,


but the custom validator is the source of the problem (it's implemented by
following an example of the JSF book of Hans Bergsten). I implemented it
before I've heared about the sandbox component, and it works, so I'll keep
hold of it at the moment.

I just tried the scenario with a built-in validator (f:validateLongRange),
and it showed the same misbehaviour:

<t:inputText id="ergPubBeginnAnzahl"
          binding="#{UmfrVorlFormBacking.inputTextErgPubBegAnzahl}"
          value="#{UmfrVorlFormBacking.dfVorlageBasis.ergPubAnzahl}"
          disabled="false"
          required="false"
          readonly="#{UmfrVorlFormBacking.vorlageAndererAutor}"
          maxlength="4"
          size="4"
          title="Textfeld zur Eingabe der Ergebnisanzahl"
          immediate="false">
        <f:validateLongRange minimum="1" maximum="9999" />
</t:inputText>


When I try to save the form the first time with only one validation error
caused by entering "0" in that inputText, one error message summary is shown
in the following h:messages tag at the top of the page:

<h:messages layout="table" globalOnly="false" showSummary="true"
      showDetail="false" errorClass="error" fatalClass="error" />


When I leave the page to a subform with an immediate action (not the
immediate save action), and then return to the first page and try to save
it, two error message summaries are printed in the h:messages for the one
validation error.

If I leave the page again to the subform and then return and press save,
three error message summaries are printed in the h:messages for the one
validation error, and so on. There's always one error message added to the
list of error messages...


Is this behaviour intended? How can I prevent this?

I can extend that question and ask, how can I prevent duplicates of error
message summaries to be printed out by the h:messages component, because
other use cases are possible where some additional validation errors occur
on the same page, and all have the same error message summary. I think one
error message summary of one type would be sufficient... And that's a
problem you all might face sometime...

(I already thought of a phase listener the removes duplicates from the error
message queue ;) ...)


Regards,

Matthias

> -----Ursprüngliche Nachricht-----
> Von: users-return-14765-mkahlau=web.de@myfaces.apache.org
> [mailto:users-return-14765-mkahlau=web.de@myfaces.apache.org]Im Auftrag
> von Mike Kienenberger
> Gesendet: Donnerstag, 5. Januar 2006 20:43
> An: MyFaces Discussion
> Betreff: Re: Custom validator invoked multiple times in process
> validations phase
>
>
> Hi Matthias,
>
> I don't know the answer to your problem, but there's a
> sandbox:validateCompareTo that you can use instead of creating your
> own custom validator.   I already use it to compare two dates:
>
> <sandbox:validateCompareTo operator="ge" for="openDateInput"
> message="Date initiated must be before requested completion date."/>
>
>
> On 1/5/06, Matthias Kahlau <mk...@web.de> wrote:
> > Hi!
> >
> >
> > I have a problem with a validator, this time with a custom
> validator used as
> > custom JSP action inside a JSF page. The validator is a "laterThan"
> > validator, which compares two dates when I try to save the form.
> >
> > I use the following tag only one time in the JSP page, but the
> validator is
> > invoked 5 times when a validation error occurs:
> >
> > <custom:validateLater than="umfragebeginn" />
> >
> >
> > You can see the multiple invocations in the logging output from
> the process
> > validations phase (entering validate()...leaving validate()):
> >
> >
> > 2006-01-05 18:49:05,031 DEBUG
> [org.apache.myfaces.lifecycle.LifecycleImpl]
> > entering processValidations in
> org.apache.myfaces.lifecycle.LifecycleImpl
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > entering/leaving isLehrevalChosen()
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > entering/leaving isLehrevalChosen()
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > entering/leaving isMitarbeiterBefrChosen()
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > entering/leaving isMitarbeiterBefrChosen()
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > entering/leaving isLehrevalChosen()
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > entering/leaving isMitarbeiterBefrChosen()
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > entering/leaving isLehrevalChosen()
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > entering/leaving isLehrevalChosen()
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] entering validate()
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] entering formatDate()
> > 2006-01-05 18:49:05,031 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] date = Thu Jan 05 01:00:00 CET 2006
> > 2006-01-05 18:49:05,031 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] formatted date (converter) = 05.01.06
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] leaving formatDate()
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getParameterisedErrorMessage()
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getParameterisedMessageFromBundle()
> > 2006-01-05 18:49:05,031 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> > Parameter: params=[Ljava.lang.Object;@129714a,
> > key=validator.laterThan.notLater
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getMessageFromBundle()
> > 2006-01-05 18:49:05,031 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> > validator.laterThan.notLater
> > 2006-01-05 18:49:05,031 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum
> {0} folgt.
> > 2006-01-05 18:49:05,031 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getMessageFromBundle()
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> > folgt.
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getParameterisedMessageFromBundle()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getParameterisedErrorMessage()
> > 2006-01-05 18:49:05,046 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] error msg = javax.faces.application.FacesMessage@1ccd7d3
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] leaving validate()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] entering validate()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] entering formatDate()
> > 2006-01-05 18:49:05,046 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] date = Thu Jan 05 01:00:00 CET 2006
> > 2006-01-05 18:49:05,046 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] formatted date (converter) = 05.01.06
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] leaving formatDate()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getParameterisedErrorMessage()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getParameterisedMessageFromBundle()
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> > Parameter: params=[Ljava.lang.Object;@16d64b9,
> > key=validator.laterThan.notLater
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getMessageFromBundle()
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> > validator.laterThan.notLater
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum
> {0} folgt.
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getMessageFromBundle()
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> > folgt.
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getParameterisedMessageFromBundle()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getParameterisedErrorMessage()
> > 2006-01-05 18:49:05,046 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] error msg = javax.faces.application.FacesMessage@efaf71
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] leaving validate()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] entering validate()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] entering formatDate()
> > 2006-01-05 18:49:05,046 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] date = Thu Jan 05 01:00:00 CET 2006
> > 2006-01-05 18:49:05,046 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] formatted date (converter) = 05.01.06
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] leaving formatDate()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getParameterisedErrorMessage()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getParameterisedMessageFromBundle()
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> > Parameter: params=[Ljava.lang.Object;@1e72538,
> > key=validator.laterThan.notLater
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getMessageFromBundle()
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> > validator.laterThan.notLater
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum
> {0} folgt.
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getMessageFromBundle()
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> > folgt.
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getParameterisedMessageFromBundle()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getParameterisedErrorMessage()
> > 2006-01-05 18:49:05,046 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] error msg = javax.faces.application.FacesMessage@3ca362
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] leaving validate()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] entering validate()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] entering formatDate()
> > 2006-01-05 18:49:05,046 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] date = Thu Jan 05 01:00:00 CET 2006
> > 2006-01-05 18:49:05,046 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] formatted date (converter) = 05.01.06
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] leaving formatDate()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getParameterisedErrorMessage()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getParameterisedMessageFromBundle()
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> > Parameter: params=[Ljava.lang.Object;@10a9d01,
> > key=validator.laterThan.notLater
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getMessageFromBundle()
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> > validator.laterThan.notLater
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum
> {0} folgt.
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getMessageFromBundle()
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> > folgt.
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getParameterisedMessageFromBundle()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getParameterisedErrorMessage()
> > 2006-01-05 18:49:05,046 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] error msg = javax.faces.application.FacesMessage@1c9d73e
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] leaving validate()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] entering validate()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] entering formatDate()
> > 2006-01-05 18:49:05,046 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] date = Thu Jan 05 01:00:00 CET 2006
> > 2006-01-05 18:49:05,046 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] formatted date (converter) = 05.01.06
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] leaving formatDate()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getParameterisedErrorMessage()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getParameterisedMessageFromBundle()
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> > Parameter: params=[Ljava.lang.Object;@52578c,
> > key=validator.laterThan.notLater
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
>  entering
> > getMessageFromBundle()
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> > validator.laterThan.notLater
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum
> {0} folgt.
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getMessageFromBundle()
> > 2006-01-05 18:49:05,046 DEBUG
> > [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> > Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> > folgt.
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getParameterisedMessageFromBundle()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> > getParameterisedErrorMessage()
> > 2006-01-05 18:49:05,046 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] error msg = javax.faces.application.FacesMessage@1f1e0e9
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterTh
> anValidato
> > r] leaving validate()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > entering/leaving isSonstUmfragenChosen()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.UmfrVor
> lFormValid
> > atorBacking] entering validateErgPubEnde()
> > 2006-01-05 18:49:05,046 DEBUG
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.UmfrVor
> lFormValid
> > atorBacking] AuswSicherheit: Umfragemanager only - no
> validation necessary
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.UmfrVor
> lFormValid
> > atorBacking] leaving validateErgPubEnde()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > entering/leaving isSonstUmfragenChosen()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > entering/leaving isCreating()
> > 2006-01-05 18:49:05,046 INFO
> >
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> > entering/leaving isLehrevalChosen()
> > 2006-01-05 18:49:05,046 DEBUG
> [org.apache.myfaces.lifecycle.LifecycleImpl]
> > exiting from lifecycle.execute in processValidations because
> > getRenderResponse is true from one of the after listeners
> > 2006-01-05 18:49:05,046 DEBUG
> [org.apache.myfaces.lifecycle.LifecycleImpl]
> > entering renderResponse in org.apache.myfaces.lifecycle.LifecycleImpl
> > 2006-01-05 18:49:05,046 DEBUG
> > [org.apache.myfaces.application.jsp.JspViewHandlerImpl] Dispatching to
> > /Management/UmfrVorlForm.jsp
> >
> >
> > The Problem is furthermore, that the h:messages, which outputs the error
> > summary of this page, does also print out the summary 5 times,
> so that the
> > user is directly confronted with this misbehaviour.
> >
> > As I could observe, the multiple invocations or at least the
> multiple error
> > message print-outs must have sth. to do with the amount of visits of the
> > page. Each time a leave the page to a subform (immediate
> action), and than
> > return to the page and try to save the form, the error message
> is printed
> > out one more time.
> >
> > What I also could see from the logging output of the rendered
> view, that one
> > validator tag (which is used only one time per component) is
> printed many
> > times, regardless of the validator type (built-in or custom), e. g.:
> >
> > Custom validator:
> >
> > <org.apache.myfaces.custom.calendar.HtmlInputCalendar id="umfrageende"
> > forceIdIndex="true" accesskey="NULL" addResources="true" alt="NULL"
> > converter="javax.faces.convert.DateTimeConverter@19b87d3"
> > currentDayCellClass="currentDayCell" dayCellClass="NULL" dir="NULL"
> > disabled="#{UmfrVorlFormBacking.vorlageAndererAutor}"
> > enabledOnUserRole="NULL" family="javax.faces.Input" immediate="false"
> > lang="NULL" localValue="NULL" localValueSet="false"
> maxlength="-2147483648"
> > monthYearRowClass="yearMonthHeader" onblur="NULL" onchange="NULL"
> > onclick="NULL" ondblclick="NULL" onfocus="NULL" onkeydown="NULL"
> > onkeypress="NULL" onkeyup="NULL" onmousedown="NULL" onmousemove="NULL"
> > onmouseout="NULL" onmouseover="NULL" onmouseup="NULL" onselect="NULL"
> > popupButtonString="NULL" popupDateFormat="NULL" popupGotoString="NULL"
> > popupScrollLeftMessage="NULL" popupScrollRightMessage="NULL"
> > popupSelectDateMessage="NULL" popupSelectMonthMessage="NULL"
> > popupSelectYearMessage="NULL" popupTodayString="Heute ist"
> > popupWeekString="Wo"
> readonly="#{UmfrVorlFormBacking.vorlageAndererAutor}"
> > renderAsPopup="true" renderPopupButtonAsImage="true" rendered="true"
> > rendererType="org.apache.myfaces.Calendar" rendersChildren="false"
> > required="true" size="-2147483648" style="NULL" styleClass="NULL"
> > submittedValue="05.01.06" tabindex="NULL" title="NULL" transient="false"
> > valid="false" validator="NULL"
> > value="#{UmfrVorlFormBacking.dfVorlageBasis.umfrEnde}"
> > valueChangeListener="NULL" visibleOnUserRole="NULL"
> > weekRowClass="weekHeader">
> >
> <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> > Validator/>
> >
> <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> > Validator/>
> >
> <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> > Validator/>
> >
> <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> > Validator/>
> >
> <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> > Validator/>
> >       </org.apache.myfaces.custom.calendar.HtmlInputCalendar>
> >
> >
> > Or built-in validator:
> >
> > <html.ext.HtmlInputText id="kennwort" forceIdIndex="true"
> accesskey="NULL"
> > alt="NULL" converter="NULL" dir="NULL" disabled="false"
> > displayValueOnly="false" displayValueOnlyStyle="NULL"
> > displayValueOnlyStyleClass="NULL" enabledOnUserRole="NULL"
> > family="javax.faces.Input" immediate="false" lang="NULL" localValue=""
> > localValueSet="true" maxlength="256" onblur="NULL" onchange="NULL"
> > onclick="NULL" ondblclick="NULL" onfocus="NULL" onkeydown="NULL"
> > onkeypress="NULL" onkeyup="NULL" onmousedown="NULL" onmousemove="NULL"
> > onmouseout="NULL" onmouseover="NULL" onmouseup="NULL" onselect="NULL"
> > readonly="#{UmfrVorlFormBacking.vorlageAndererAutor}" rendered="true"
> > rendererType="org.apache.myfaces.Text" rendersChildren="false"
> > required="false" setDisplayValueOnly="false" size="50" style="NULL"
> > styleClass="NULL" submittedValue="NULL" tabindex="NULL"
> title="Textfeld zur
> > Eingabe des Kennworts" transient="false" valid="true" validator="NULL"
> > value="#{UmfrVorlFormBacking.dfVorlageBasis.kennwort}"
> > valueChangeListener="NULL" visibleOnUserRole="NULL">
> >           <javax.faces.validator.LengthValidator/>
> >           <javax.faces.validator.LengthValidator/>
> >           <javax.faces.validator.LengthValidator/>
> >           <javax.faces.validator.LengthValidator/>
> >           <javax.faces.validator.LengthValidator/>
> >         </html.ext.HtmlInputText>
> >
> >
> > How can I manage this? (The problem reminds me of my post send
> on Tuesday,
> > which might also be caused by multiple invocations of a
> validator, but that
> > validator was a built-in one: Please see
> > http://www.mail-archive.com/users@myfaces.apache.org/msg14355.html)
> >
> >
> >
> > Regards,
> >
> > Matthias
> >
> >


Re: Custom validator invoked multiple times in process validations phase

Posted by Mike Kienenberger <mk...@gmail.com>.
Hi Matthias,

I don't know the answer to your problem, but there's a
sandbox:validateCompareTo that you can use instead of creating your
own custom validator.   I already use it to compare two dates:

<sandbox:validateCompareTo operator="ge" for="openDateInput"
message="Date initiated must be before requested completion date."/>


On 1/5/06, Matthias Kahlau <mk...@web.de> wrote:
> Hi!
>
>
> I have a problem with a validator, this time with a custom validator used as
> custom JSP action inside a JSF page. The validator is a "laterThan"
> validator, which compares two dates when I try to save the form.
>
> I use the following tag only one time in the JSP page, but the validator is
> invoked 5 times when a validation error occurs:
>
> <custom:validateLater than="umfragebeginn" />
>
>
> You can see the multiple invocations in the logging output from the process
> validations phase (entering validate()...leaving validate()):
>
>
> 2006-01-05 18:49:05,031 DEBUG [org.apache.myfaces.lifecycle.LifecycleImpl]
> entering processValidations in org.apache.myfaces.lifecycle.LifecycleImpl
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> entering/leaving isLehrevalChosen()
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> entering/leaving isLehrevalChosen()
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> entering/leaving isMitarbeiterBefrChosen()
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> entering/leaving isMitarbeiterBefrChosen()
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> entering/leaving isLehrevalChosen()
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> entering/leaving isMitarbeiterBefrChosen()
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> entering/leaving isLehrevalChosen()
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> entering/leaving isLehrevalChosen()
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] entering validate()
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] entering formatDate()
> 2006-01-05 18:49:05,031 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] date = Thu Jan 05 01:00:00 CET 2006
> 2006-01-05 18:49:05,031 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] formatted date (converter) = 05.01.06
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] leaving formatDate()
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getParameterisedErrorMessage()
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getParameterisedMessageFromBundle()
> 2006-01-05 18:49:05,031 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> Parameter: params=[Ljava.lang.Object;@129714a,
> key=validator.laterThan.notLater
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getMessageFromBundle()
> 2006-01-05 18:49:05,031 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> validator.laterThan.notLater
> 2006-01-05 18:49:05,031 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum {0} folgt.
> 2006-01-05 18:49:05,031 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getMessageFromBundle()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> folgt.
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getParameterisedMessageFromBundle()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getParameterisedErrorMessage()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] error msg = javax.faces.application.FacesMessage@1ccd7d3
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] leaving validate()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] entering validate()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] entering formatDate()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] date = Thu Jan 05 01:00:00 CET 2006
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] formatted date (converter) = 05.01.06
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] leaving formatDate()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getParameterisedErrorMessage()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getParameterisedMessageFromBundle()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> Parameter: params=[Ljava.lang.Object;@16d64b9,
> key=validator.laterThan.notLater
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getMessageFromBundle()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> validator.laterThan.notLater
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum {0} folgt.
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getMessageFromBundle()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> folgt.
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getParameterisedMessageFromBundle()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getParameterisedErrorMessage()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] error msg = javax.faces.application.FacesMessage@efaf71
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] leaving validate()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] entering validate()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] entering formatDate()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] date = Thu Jan 05 01:00:00 CET 2006
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] formatted date (converter) = 05.01.06
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] leaving formatDate()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getParameterisedErrorMessage()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getParameterisedMessageFromBundle()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> Parameter: params=[Ljava.lang.Object;@1e72538,
> key=validator.laterThan.notLater
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getMessageFromBundle()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> validator.laterThan.notLater
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum {0} folgt.
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getMessageFromBundle()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> folgt.
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getParameterisedMessageFromBundle()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getParameterisedErrorMessage()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] error msg = javax.faces.application.FacesMessage@3ca362
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] leaving validate()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] entering validate()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] entering formatDate()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] date = Thu Jan 05 01:00:00 CET 2006
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] formatted date (converter) = 05.01.06
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] leaving formatDate()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getParameterisedErrorMessage()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getParameterisedMessageFromBundle()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> Parameter: params=[Ljava.lang.Object;@10a9d01,
> key=validator.laterThan.notLater
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getMessageFromBundle()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> validator.laterThan.notLater
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum {0} folgt.
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getMessageFromBundle()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> folgt.
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getParameterisedMessageFromBundle()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getParameterisedErrorMessage()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] error msg = javax.faces.application.FacesMessage@1c9d73e
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] leaving validate()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] entering validate()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] entering formatDate()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] date = Thu Jan 05 01:00:00 CET 2006
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] formatted date (converter) = 05.01.06
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] leaving formatDate()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getParameterisedErrorMessage()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getParameterisedMessageFromBundle()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil]
> Parameter: params=[Ljava.lang.Object;@52578c,
> key=validator.laterThan.notLater
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] entering
> getMessageFromBundle()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] key =
> validator.laterThan.notLater
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum {0} folgt.
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getMessageFromBundle()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] msg =
> Bitte ein Umfrageendedatum eingeben, das dem Umfragebeginndatum 05.01.06
> folgt.
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getParameterisedMessageFromBundle()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.FacesMessageUtil] leaving
> getParameterisedErrorMessage()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] error msg = javax.faces.application.FacesMessage@1f1e0e9
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThanValidato
> r] leaving validate()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> entering/leaving isSonstUmfragenChosen()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.UmfrVorlFormValid
> atorBacking] entering validateErgPubEnde()
> 2006-01-05 18:49:05,046 DEBUG
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.UmfrVorlFormValid
> atorBacking] AuswSicherheit: Umfragemanager only - no validation necessary
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.utils.validator.UmfrVorlFormValid
> atorBacking] leaving validateErgPubEnde()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> entering/leaving isSonstUmfragenChosen()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> entering/leaving isCreating()
> 2006-01-05 18:49:05,046 INFO
> [de.fhzw.portal.umfragesystem.view.backing.management.UmfrVorlFormBacking]
> entering/leaving isLehrevalChosen()
> 2006-01-05 18:49:05,046 DEBUG [org.apache.myfaces.lifecycle.LifecycleImpl]
> exiting from lifecycle.execute in processValidations because
> getRenderResponse is true from one of the after listeners
> 2006-01-05 18:49:05,046 DEBUG [org.apache.myfaces.lifecycle.LifecycleImpl]
> entering renderResponse in org.apache.myfaces.lifecycle.LifecycleImpl
> 2006-01-05 18:49:05,046 DEBUG
> [org.apache.myfaces.application.jsp.JspViewHandlerImpl] Dispatching to
> /Management/UmfrVorlForm.jsp
>
>
> The Problem is furthermore, that the h:messages, which outputs the error
> summary of this page, does also print out the summary 5 times, so that the
> user is directly confronted with this misbehaviour.
>
> As I could observe, the multiple invocations or at least the multiple error
> message print-outs must have sth. to do with the amount of visits of the
> page. Each time a leave the page to a subform (immediate action), and than
> return to the page and try to save the form, the error message is printed
> out one more time.
>
> What I also could see from the logging output of the rendered view, that one
> validator tag (which is used only one time per component) is printed many
> times, regardless of the validator type (built-in or custom), e. g.:
>
> Custom validator:
>
> <org.apache.myfaces.custom.calendar.HtmlInputCalendar id="umfrageende"
> forceIdIndex="true" accesskey="NULL" addResources="true" alt="NULL"
> converter="javax.faces.convert.DateTimeConverter@19b87d3"
> currentDayCellClass="currentDayCell" dayCellClass="NULL" dir="NULL"
> disabled="#{UmfrVorlFormBacking.vorlageAndererAutor}"
> enabledOnUserRole="NULL" family="javax.faces.Input" immediate="false"
> lang="NULL" localValue="NULL" localValueSet="false" maxlength="-2147483648"
> monthYearRowClass="yearMonthHeader" onblur="NULL" onchange="NULL"
> onclick="NULL" ondblclick="NULL" onfocus="NULL" onkeydown="NULL"
> onkeypress="NULL" onkeyup="NULL" onmousedown="NULL" onmousemove="NULL"
> onmouseout="NULL" onmouseover="NULL" onmouseup="NULL" onselect="NULL"
> popupButtonString="NULL" popupDateFormat="NULL" popupGotoString="NULL"
> popupScrollLeftMessage="NULL" popupScrollRightMessage="NULL"
> popupSelectDateMessage="NULL" popupSelectMonthMessage="NULL"
> popupSelectYearMessage="NULL" popupTodayString="Heute ist"
> popupWeekString="Wo" readonly="#{UmfrVorlFormBacking.vorlageAndererAutor}"
> renderAsPopup="true" renderPopupButtonAsImage="true" rendered="true"
> rendererType="org.apache.myfaces.Calendar" rendersChildren="false"
> required="true" size="-2147483648" style="NULL" styleClass="NULL"
> submittedValue="05.01.06" tabindex="NULL" title="NULL" transient="false"
> valid="false" validator="NULL"
> value="#{UmfrVorlFormBacking.dfVorlageBasis.umfrEnde}"
> valueChangeListener="NULL" visibleOnUserRole="NULL"
> weekRowClass="weekHeader">
>         <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> Validator/>
>         <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> Validator/>
>         <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> Validator/>
>         <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> Validator/>
>         <de.fhzw.portal.umfragesystem.view.backing.utils.validator.LaterThan
> Validator/>
>       </org.apache.myfaces.custom.calendar.HtmlInputCalendar>
>
>
> Or built-in validator:
>
> <html.ext.HtmlInputText id="kennwort" forceIdIndex="true" accesskey="NULL"
> alt="NULL" converter="NULL" dir="NULL" disabled="false"
> displayValueOnly="false" displayValueOnlyStyle="NULL"
> displayValueOnlyStyleClass="NULL" enabledOnUserRole="NULL"
> family="javax.faces.Input" immediate="false" lang="NULL" localValue=""
> localValueSet="true" maxlength="256" onblur="NULL" onchange="NULL"
> onclick="NULL" ondblclick="NULL" onfocus="NULL" onkeydown="NULL"
> onkeypress="NULL" onkeyup="NULL" onmousedown="NULL" onmousemove="NULL"
> onmouseout="NULL" onmouseover="NULL" onmouseup="NULL" onselect="NULL"
> readonly="#{UmfrVorlFormBacking.vorlageAndererAutor}" rendered="true"
> rendererType="org.apache.myfaces.Text" rendersChildren="false"
> required="false" setDisplayValueOnly="false" size="50" style="NULL"
> styleClass="NULL" submittedValue="NULL" tabindex="NULL" title="Textfeld zur
> Eingabe des Kennworts" transient="false" valid="true" validator="NULL"
> value="#{UmfrVorlFormBacking.dfVorlageBasis.kennwort}"
> valueChangeListener="NULL" visibleOnUserRole="NULL">
>           <javax.faces.validator.LengthValidator/>
>           <javax.faces.validator.LengthValidator/>
>           <javax.faces.validator.LengthValidator/>
>           <javax.faces.validator.LengthValidator/>
>           <javax.faces.validator.LengthValidator/>
>         </html.ext.HtmlInputText>
>
>
> How can I manage this? (The problem reminds me of my post send on Tuesday,
> which might also be caused by multiple invocations of a validator, but that
> validator was a built-in one: Please see
> http://www.mail-archive.com/users@myfaces.apache.org/msg14355.html)
>
>
>
> Regards,
>
> Matthias
>
>