You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Joost Kuif <Jo...@mobillion.nl> on 2006/01/23 11:31:12 UTC

Bug in Cforms validation?

Hi,

 

Last Friday i mailed this list about cross checking in multiple fields.
I have changed this code with some javascript validation, and still I
encounter unexpected behaviour.. 

I have included the output of these system.out statements here:

 

Input in form:

Password                     123456

Passwordretyped          123456

 

Console:

passwordretyped: pass1 = 123456 pass2 = 123456

password: pass1 = 123456 pass2 = 123456

passwordretyped: pass1 = 123456 pass2 = 123456

 

Input in form:

Password                     123

Passwordretyped          12345

 

Console:

passwordretyped: pass1 = 123 pass2 = 12345

password: pass1 = 123 pass2 = null

passwordretyped: pass1 = null pass2 = 12345

 

 

These null values are not what you would expect... And why is the
passwordretyped field validated twice? Does anyone have a
idea/suggestion?

 

Joost

 

 

 

The form definition:

 

    <fd:field id="password" required="true">

      <fd:label><i18n:text
i18n:key="register.password">Wachtwoord</i18n:text></fd:label>

      <fd:help><i18n:text i18n:key="register.password.help">Kies een
wachtwoord bestaande uit minimaal 4 letters en 2
cijfers</i18n:text></fd:help>

      <fd:datatype base="string"/>

      <fd:validation>

        <fd:javascript>

        var pass1 = widget.getValue();

        var pass2 =
widget.getParent().lookupWidget("passwordretyped").getValue();

        java.lang.System.out.println("password: pass1 = " + pass1 + "
pass2 = " + pass2);

        if (pass1.equals(pass2) == false )

        {

            var i18nMessage = new
Packages.org.apache.cocoon.forms.util.I18nMessage("someErrorMsg", "tt");

            widget.setValidationError(new
Packages.org.apache.cocoon.forms.validation.ValidationError(i18nMessage)
);

            return false;

        }

        return true;

        </fd:javascript>

      </fd:validation>

    </fd:field>

    

    <fd:field id="passwordretyped" required="true">

      <fd:label><i18n:text
i18n:key="register.passwordretyped">Wachtwoord
nogmaals</i18n:text></fd:label>

      <fd:help><i18n:text i18n:key="register.passwordretyped.help">Ter
controle voer je hier nogmaals je gekozen wachtwoord
in</i18n:text></fd:help>

      <fd:datatype base="string"/>

      <fd:validation>

        <fd:javascript>

        var pass1 =
widget.getParent().lookupWidget("password").getValue();

        var pass2 = widget.getValue();

        java.lang.System.out.println("passwordretyped: pass1 = " + pass1
+ " pass2 = " + pass2);

        if (pass1.equals(pass2) == false )

        {

            var i18nMessage = new
Packages.org.apache.cocoon.forms.util.I18nMessage("someErrorMsg", "tt");

            widget.setValidationError(new
Packages.org.apache.cocoon.forms.validation.ValidationError(i18nMessage)
);

            return false;

        }

        return true;

        </fd:javascript>

        <!-- fd:assert test="passwordretyped = password">

          <fd:failmessage><i18n:text
i18n:key="register.passwordretyped.notok">Wachtwoorden zijn niet
identiek</i18n:text></fd:failmessage>

        </fd:assert -->

      </fd:validation>

    </fd:field>