Re: T5: built-in numeric validator

2011-03-31 Thread Chris Norris
The Tapestry NumericValidator seems to rely on whether
Double.valueOf(String) will throw an exception, which it does for
'1k'.

How are you configuring and using your validator?

On Tue, Mar 29, 2011 at 5:19 PM, Adam Zimowski zimowsk...@gmail.com wrote:
 It is server side. Looks like if input starts with a digit, Tapestry is happy 
 :)

 Adam

 On Tue, Mar 29, 2011 at 5:05 PM, Howard Lewis Ship hls...@gmail.com wrote:
 Seems like a bug to me!  Surprising, though. Is this server-side or
 client-side validation?

 On Tue, Mar 29, 2011 at 2:49 PM, Adam Zimowski zimowsk...@gmail.com wrote:
 For numeric fields, Tapestry validates correctly non-numeric input.
 However, input such as:

 1k
 1\
 etc..

 passes the validation.

 Am I missing something?

 Adam

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org





 --
 Howard M. Lewis Ship

 Creator of Apache Tapestry

 The source for Tapestry training, mentoring and support. Contact me to
 learn how I can get you up and productive in Tapestry fast!

 (971) 678-5210
 http://howardlewisship.com

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: T5: built-in numeric validator

2011-03-31 Thread Adam Zimowski
My client side validation is disabled. This happens on my shopping
cart page where I have multiple forms (inside a loop) with indexed
trackers ( MapInteger, ValidationTracker. You can find complete code
for the ShoppingCart page which exhibits this behavior in another
thread which I posted recently:

T5: form validation with pre-existing errors

The actual numeric field which exhibits this is defined in the template as:

t:textfield t:id=quantity t:context=index
label=prop:quantityLabel validate=required size=2/


   @Component(parameters = {tracker=tracker})
   private Form cartForm;

   @Persist(PersistenceConstants.FLASH)
   private MapInteger, ValidationTracker indexedTrackers;

public ValidationTracker getTracker() {
   if(indexedTrackers == null) return new ValidationTrackerImpl();
   return indexedTrackers.get(index);
   }

   public void setTracker(ValidationTracker aTracker) {

   if(indexedTrackers == null) {
   if(log.isTraceEnabled()) log.trace(crating
indexed trackers map);
   indexedTrackers = new HashMapInteger,
ValidationTracker();
   }

   if(log.isTraceEnabled()) {
   log.trace(setting tracker for index:  + index);
   }

   indexedTrackers.put(index, aTracker);
   }

In addition, this field carries a mixin:

@Component(id=ID_QUANTITY_FIELD, parameters ={AttachError.message=fieldError})
@MixinClasses(value=AttachError.class)
private TextField quantityField;

@MixinAfter
public class AttachError {

@Parameter(required = true, allowNull = true)
private String message;

@Environmental
private ValidationTracker tracker;

@InjectContainer
private Field field;


void setupRender() {
if (message != null) {
tracker.recordError(field, message);
}
}
}

 public String getFieldError() {
   String error = null;
   ValidationTracker tracker = getTracker();
   if(tracker != null  tracker.getError(quantityField) != null) {
   return null;
   }
   CartItemBean cib = findCartItem(cartDisplayItem.getLineNumber());

// look up error in CartItemBean and if found return it, or return null;

   return error;
}

Let me know, perhaps I am doing something wrong..

Adam

On Thu, Mar 31, 2011 at 9:03 AM, Chris Norris
thechrisproject.li...@gmail.com wrote:
 The Tapestry NumericValidator seems to rely on whether
 Double.valueOf(String) will throw an exception, which it does for
 '1k'.

 How are you configuring and using your validator?

 On Tue, Mar 29, 2011 at 5:19 PM, Adam Zimowski zimowsk...@gmail.com wrote:
 It is server side. Looks like if input starts with a digit, Tapestry is 
 happy :)

 Adam

 On Tue, Mar 29, 2011 at 5:05 PM, Howard Lewis Ship hls...@gmail.com wrote:
 Seems like a bug to me!  Surprising, though. Is this server-side or
 client-side validation?

 On Tue, Mar 29, 2011 at 2:49 PM, Adam Zimowski zimowsk...@gmail.com wrote:
 For numeric fields, Tapestry validates correctly non-numeric input.
 However, input such as:

 1k
 1\
 etc..

 passes the validation.

 Am I missing something?

 Adam

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org





 --
 Howard M. Lewis Ship

 Creator of Apache Tapestry

 The source for Tapestry training, mentoring and support. Contact me to
 learn how I can get you up and productive in Tapestry fast!

 (971) 678-5210
 http://howardlewisship.com

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: T5: built-in numeric validator

2011-03-31 Thread Chris Norris
Sorry, I was completely wrong. I was looking at a NumericValidator
that we wrote, not a Tapestry one.

On Thu, Mar 31, 2011 at 9:43 AM, Adam Zimowski zimowsk...@gmail.com wrote:
 My client side validation is disabled. This happens on my shopping
 cart page where I have multiple forms (inside a loop) with indexed
 trackers ( MapInteger, ValidationTracker. You can find complete code
 for the ShoppingCart page which exhibits this behavior in another
 thread which I posted recently:

 T5: form validation with pre-existing errors

 The actual numeric field which exhibits this is defined in the template as:

 t:textfield t:id=quantity t:context=index
 label=prop:quantityLabel validate=required size=2/


       @Component(parameters = {tracker=tracker})
       private Form cartForm;

       @Persist(PersistenceConstants.FLASH)
       private MapInteger, ValidationTracker indexedTrackers;

 public ValidationTracker getTracker() {
               if(indexedTrackers == null) return new ValidationTrackerImpl();
               return indexedTrackers.get(index);
       }

       public void setTracker(ValidationTracker aTracker) {

               if(indexedTrackers == null) {
                       if(log.isTraceEnabled()) log.trace(crating
 indexed trackers map);
                       indexedTrackers = new HashMapInteger,
 ValidationTracker();
               }

               if(log.isTraceEnabled()) {
                       log.trace(setting tracker for index:  + index);
               }

               indexedTrackers.put(index, aTracker);
       }

 In addition, this field carries a mixin:

 @Component(id=ID_QUANTITY_FIELD, parameters 
 ={AttachError.message=fieldError})
 @MixinClasses(value=AttachError.class)
 private TextField quantityField;

 @MixinAfter
 public class AttachError {

        @Parameter(required = true, allowNull = true)
        private String message;

        @Environmental
        private ValidationTracker tracker;

        @InjectContainer
        private Field field;


        void setupRender() {
                if (message != null) {
                        tracker.recordError(field, message);
                }
        }
 }

  public String getFieldError() {
               String error = null;
               ValidationTracker tracker = getTracker();
               if(tracker != null  tracker.getError(quantityField) != null) {
                       return null;
               }
               CartItemBean cib = 
 findCartItem(cartDisplayItem.getLineNumber());

    // look up error in CartItemBean and if found return it, or return null;

   return error;
 }

 Let me know, perhaps I am doing something wrong..

 Adam

 On Thu, Mar 31, 2011 at 9:03 AM, Chris Norris
 thechrisproject.li...@gmail.com wrote:
 The Tapestry NumericValidator seems to rely on whether
 Double.valueOf(String) will throw an exception, which it does for
 '1k'.

 How are you configuring and using your validator?

 On Tue, Mar 29, 2011 at 5:19 PM, Adam Zimowski zimowsk...@gmail.com wrote:
 It is server side. Looks like if input starts with a digit, Tapestry is 
 happy :)

 Adam

 On Tue, Mar 29, 2011 at 5:05 PM, Howard Lewis Ship hls...@gmail.com wrote:
 Seems like a bug to me!  Surprising, though. Is this server-side or
 client-side validation?

 On Tue, Mar 29, 2011 at 2:49 PM, Adam Zimowski zimowsk...@gmail.com 
 wrote:
 For numeric fields, Tapestry validates correctly non-numeric input.
 However, input such as:

 1k
 1\
 etc..

 passes the validation.

 Am I missing something?

 Adam

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org





 --
 Howard M. Lewis Ship

 Creator of Apache Tapestry

 The source for Tapestry training, mentoring and support. Contact me to
 learn how I can get you up and productive in Tapestry fast!

 (971) 678-5210
 http://howardlewisship.com

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: T5: built-in numeric validator

2011-03-31 Thread Adam Zimowski
No problem. Howard mentioned this may be a Tapestry bug. I'm in no
immediate rush as my project isn't going live until next year, so
hopefully by then it gets fixed.

Adam

On Thu, Mar 31, 2011 at 10:51 AM, Chris Norris
thechrisproject.li...@gmail.com wrote:
 Sorry, I was completely wrong. I was looking at a NumericValidator
 that we wrote, not a Tapestry one.

 On Thu, Mar 31, 2011 at 9:43 AM, Adam Zimowski zimowsk...@gmail.com wrote:
 My client side validation is disabled. This happens on my shopping
 cart page where I have multiple forms (inside a loop) with indexed
 trackers ( MapInteger, ValidationTracker. You can find complete code
 for the ShoppingCart page which exhibits this behavior in another
 thread which I posted recently:

 T5: form validation with pre-existing errors

 The actual numeric field which exhibits this is defined in the template as:

 t:textfield t:id=quantity t:context=index
 label=prop:quantityLabel validate=required size=2/


       @Component(parameters = {tracker=tracker})
       private Form cartForm;

       @Persist(PersistenceConstants.FLASH)
       private MapInteger, ValidationTracker indexedTrackers;

 public ValidationTracker getTracker() {
               if(indexedTrackers == null) return new ValidationTrackerImpl();
               return indexedTrackers.get(index);
       }

       public void setTracker(ValidationTracker aTracker) {

               if(indexedTrackers == null) {
                       if(log.isTraceEnabled()) log.trace(crating
 indexed trackers map);
                       indexedTrackers = new HashMapInteger,
 ValidationTracker();
               }

               if(log.isTraceEnabled()) {
                       log.trace(setting tracker for index:  + index);
               }

               indexedTrackers.put(index, aTracker);
       }

 In addition, this field carries a mixin:

 @Component(id=ID_QUANTITY_FIELD, parameters 
 ={AttachError.message=fieldError})
 @MixinClasses(value=AttachError.class)
 private TextField quantityField;

 @MixinAfter
 public class AttachError {

        @Parameter(required = true, allowNull = true)
        private String message;

        @Environmental
        private ValidationTracker tracker;

        @InjectContainer
        private Field field;


        void setupRender() {
                if (message != null) {
                        tracker.recordError(field, message);
                }
        }
 }

  public String getFieldError() {
               String error = null;
               ValidationTracker tracker = getTracker();
               if(tracker != null  tracker.getError(quantityField) != null) 
 {
                       return null;
               }
               CartItemBean cib = 
 findCartItem(cartDisplayItem.getLineNumber());

    // look up error in CartItemBean and if found return it, or return null;

   return error;
 }

 Let me know, perhaps I am doing something wrong..

 Adam

 On Thu, Mar 31, 2011 at 9:03 AM, Chris Norris
 thechrisproject.li...@gmail.com wrote:
 The Tapestry NumericValidator seems to rely on whether
 Double.valueOf(String) will throw an exception, which it does for
 '1k'.

 How are you configuring and using your validator?

 On Tue, Mar 29, 2011 at 5:19 PM, Adam Zimowski zimowsk...@gmail.com wrote:
 It is server side. Looks like if input starts with a digit, Tapestry is 
 happy :)

 Adam

 On Tue, Mar 29, 2011 at 5:05 PM, Howard Lewis Ship hls...@gmail.com 
 wrote:
 Seems like a bug to me!  Surprising, though. Is this server-side or
 client-side validation?

 On Tue, Mar 29, 2011 at 2:49 PM, Adam Zimowski zimowsk...@gmail.com 
 wrote:
 For numeric fields, Tapestry validates correctly non-numeric input.
 However, input such as:

 1k
 1\
 etc..

 passes the validation.

 Am I missing something?

 Adam

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org





 --
 Howard M. Lewis Ship

 Creator of Apache Tapestry

 The source for Tapestry training, mentoring and support. Contact me to
 learn how I can get you up and productive in Tapestry fast!

 (971) 678-5210
 http://howardlewisship.com

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional 

Re: T5: built-in numeric validator

2011-03-31 Thread Chris Norris
Well perhaps you can teach me a few things. I'm trying to figure out
by what mechanism tapestry would be validating this. We generally
specify our custom NumericValidator on numeric fields. Is there some
sort of automatic validation that can occur? I don't see much mention
of it on this page: http://tapestry.apache.org/input-validation.html

On Thu, Mar 31, 2011 at 10:54 AM, Adam Zimowski zimowsk...@gmail.com wrote:
 No problem. Howard mentioned this may be a Tapestry bug. I'm in no
 immediate rush as my project isn't going live until next year, so
 hopefully by then it gets fixed.

 Adam

 On Thu, Mar 31, 2011 at 10:51 AM, Chris Norris
 thechrisproject.li...@gmail.com wrote:
 Sorry, I was completely wrong. I was looking at a NumericValidator
 that we wrote, not a Tapestry one.

 On Thu, Mar 31, 2011 at 9:43 AM, Adam Zimowski zimowsk...@gmail.com wrote:
 My client side validation is disabled. This happens on my shopping
 cart page where I have multiple forms (inside a loop) with indexed
 trackers ( MapInteger, ValidationTracker. You can find complete code
 for the ShoppingCart page which exhibits this behavior in another
 thread which I posted recently:

 T5: form validation with pre-existing errors

 The actual numeric field which exhibits this is defined in the template as:

 t:textfield t:id=quantity t:context=index
 label=prop:quantityLabel validate=required size=2/


       @Component(parameters = {tracker=tracker})
       private Form cartForm;

       @Persist(PersistenceConstants.FLASH)
       private MapInteger, ValidationTracker indexedTrackers;

 public ValidationTracker getTracker() {
               if(indexedTrackers == null) return new 
 ValidationTrackerImpl();
               return indexedTrackers.get(index);
       }

       public void setTracker(ValidationTracker aTracker) {

               if(indexedTrackers == null) {
                       if(log.isTraceEnabled()) log.trace(crating
 indexed trackers map);
                       indexedTrackers = new HashMapInteger,
 ValidationTracker();
               }

               if(log.isTraceEnabled()) {
                       log.trace(setting tracker for index:  + index);
               }

               indexedTrackers.put(index, aTracker);
       }

 In addition, this field carries a mixin:

 @Component(id=ID_QUANTITY_FIELD, parameters 
 ={AttachError.message=fieldError})
 @MixinClasses(value=AttachError.class)
 private TextField quantityField;

 @MixinAfter
 public class AttachError {

        @Parameter(required = true, allowNull = true)
        private String message;

        @Environmental
        private ValidationTracker tracker;

        @InjectContainer
        private Field field;


        void setupRender() {
                if (message != null) {
                        tracker.recordError(field, message);
                }
        }
 }

  public String getFieldError() {
               String error = null;
               ValidationTracker tracker = getTracker();
               if(tracker != null  tracker.getError(quantityField) != 
 null) {
                       return null;
               }
               CartItemBean cib = 
 findCartItem(cartDisplayItem.getLineNumber());

    // look up error in CartItemBean and if found return it, or return null;

   return error;
 }

 Let me know, perhaps I am doing something wrong..

 Adam

 On Thu, Mar 31, 2011 at 9:03 AM, Chris Norris
 thechrisproject.li...@gmail.com wrote:
 The Tapestry NumericValidator seems to rely on whether
 Double.valueOf(String) will throw an exception, which it does for
 '1k'.

 How are you configuring and using your validator?

 On Tue, Mar 29, 2011 at 5:19 PM, Adam Zimowski zimowsk...@gmail.com 
 wrote:
 It is server side. Looks like if input starts with a digit, Tapestry is 
 happy :)

 Adam

 On Tue, Mar 29, 2011 at 5:05 PM, Howard Lewis Ship hls...@gmail.com 
 wrote:
 Seems like a bug to me!  Surprising, though. Is this server-side or
 client-side validation?

 On Tue, Mar 29, 2011 at 2:49 PM, Adam Zimowski zimowsk...@gmail.com 
 wrote:
 For numeric fields, Tapestry validates correctly non-numeric input.
 However, input such as:

 1k
 1\
 etc..

 passes the validation.

 Am I missing something?

 Adam

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org





 --
 Howard M. Lewis Ship

 Creator of Apache Tapestry

 The source for Tapestry training, mentoring and support. Contact me to
 learn how I can get you up and productive in Tapestry fast!

 (971) 678-5210
 http://howardlewisship.com

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



 -
 To unsubscribe, e-mail: 

Re: T5: built-in numeric validator

2011-03-31 Thread Adam Zimowski
:) I don't think I'm in position to teach Tapestry to others, I'm
still learning myself But, using Eclipse I looked at class
hierarchy for:

org.apache.tapestry5.AbstractValidator

and see that Tapestry provides only the following out of the box:

Email, Max, MaxLength, Min, MinLength, None, Regexp and Required

So, just by guessing, I'd venture to say that Tapestry uses Regexp
validator to test if numeric field contains indeed a numeric value.
I'd also suspect that if there is a bug, it's probably in the regular
expression passed to Regexp validator on numeric field test, not the
validator itself.

Again, I'm still learning myself, so somebody that actually knows for
sure would have to confirm, but that's be my guess.

Adam

On Thu, Mar 31, 2011 at 10:59 AM, Chris Norris
thechrisproject.li...@gmail.com wrote:
 Well perhaps you can teach me a few things. I'm trying to figure out
 by what mechanism tapestry would be validating this. We generally
 specify our custom NumericValidator on numeric fields. Is there some
 sort of automatic validation that can occur? I don't see much mention
 of it on this page: http://tapestry.apache.org/input-validation.html

 On Thu, Mar 31, 2011 at 10:54 AM, Adam Zimowski zimowsk...@gmail.com wrote:
 No problem. Howard mentioned this may be a Tapestry bug. I'm in no
 immediate rush as my project isn't going live until next year, so
 hopefully by then it gets fixed.

 Adam

 On Thu, Mar 31, 2011 at 10:51 AM, Chris Norris
 thechrisproject.li...@gmail.com wrote:
 Sorry, I was completely wrong. I was looking at a NumericValidator
 that we wrote, not a Tapestry one.

 On Thu, Mar 31, 2011 at 9:43 AM, Adam Zimowski zimowsk...@gmail.com wrote:
 My client side validation is disabled. This happens on my shopping
 cart page where I have multiple forms (inside a loop) with indexed
 trackers ( MapInteger, ValidationTracker. You can find complete code
 for the ShoppingCart page which exhibits this behavior in another
 thread which I posted recently:

 T5: form validation with pre-existing errors

 The actual numeric field which exhibits this is defined in the template as:

 t:textfield t:id=quantity t:context=index
 label=prop:quantityLabel validate=required size=2/


       @Component(parameters = {tracker=tracker})
       private Form cartForm;

       @Persist(PersistenceConstants.FLASH)
       private MapInteger, ValidationTracker indexedTrackers;

 public ValidationTracker getTracker() {
               if(indexedTrackers == null) return new 
 ValidationTrackerImpl();
               return indexedTrackers.get(index);
       }

       public void setTracker(ValidationTracker aTracker) {

               if(indexedTrackers == null) {
                       if(log.isTraceEnabled()) log.trace(crating
 indexed trackers map);
                       indexedTrackers = new HashMapInteger,
 ValidationTracker();
               }

               if(log.isTraceEnabled()) {
                       log.trace(setting tracker for index:  + index);
               }

               indexedTrackers.put(index, aTracker);
       }

 In addition, this field carries a mixin:

 @Component(id=ID_QUANTITY_FIELD, parameters 
 ={AttachError.message=fieldError})
 @MixinClasses(value=AttachError.class)
 private TextField quantityField;

 @MixinAfter
 public class AttachError {

        @Parameter(required = true, allowNull = true)
        private String message;

        @Environmental
        private ValidationTracker tracker;

        @InjectContainer
        private Field field;


        void setupRender() {
                if (message != null) {
                        tracker.recordError(field, message);
                }
        }
 }

  public String getFieldError() {
               String error = null;
               ValidationTracker tracker = getTracker();
               if(tracker != null  tracker.getError(quantityField) != 
 null) {
                       return null;
               }
               CartItemBean cib = 
 findCartItem(cartDisplayItem.getLineNumber());

    // look up error in CartItemBean and if found return it, or return null;

   return error;
 }

 Let me know, perhaps I am doing something wrong..

 Adam

 On Thu, Mar 31, 2011 at 9:03 AM, Chris Norris
 thechrisproject.li...@gmail.com wrote:
 The Tapestry NumericValidator seems to rely on whether
 Double.valueOf(String) will throw an exception, which it does for
 '1k'.

 How are you configuring and using your validator?

 On Tue, Mar 29, 2011 at 5:19 PM, Adam Zimowski zimowsk...@gmail.com 
 wrote:
 It is server side. Looks like if input starts with a digit, Tapestry is 
 happy :)

 Adam

 On Tue, Mar 29, 2011 at 5:05 PM, Howard Lewis Ship hls...@gmail.com 
 wrote:
 Seems like a bug to me!  Surprising, though. Is this server-side or
 client-side validation?

 On Tue, Mar 29, 2011 at 2:49 PM, Adam Zimowski zimowsk...@gmail.com 
 wrote:
 For numeric fields, Tapestry validates correctly non-numeric input.
 However, input such as:

 1k
 1\
 

Re: T5: built-in numeric validator

2011-03-31 Thread Chris Norris
Now I'm all curious. After looking through
FieldValidatorDefaultSource, FieldValidatorSource and the
ValidationContstraintGenerator implementations, I'm not sure how a
numeric field would automatically be validated as such. The Regexp
validator is only reference in TapestryModule, which allows you to
explicitly use it, but you're talking about something automatic.

I'm wondering what lead you to believe it would be automatically
generated in the first place? Though Howard's suggestion that it isn't
working right seems to imply that it should be doing that...

On Thu, Mar 31, 2011 at 11:04 AM, Adam Zimowski zimowsk...@gmail.com wrote:
 :) I don't think I'm in position to teach Tapestry to others, I'm
 still learning myself But, using Eclipse I looked at class
 hierarchy for:

 org.apache.tapestry5.AbstractValidator

 and see that Tapestry provides only the following out of the box:

 Email, Max, MaxLength, Min, MinLength, None, Regexp and Required

 So, just by guessing, I'd venture to say that Tapestry uses Regexp
 validator to test if numeric field contains indeed a numeric value.
 I'd also suspect that if there is a bug, it's probably in the regular
 expression passed to Regexp validator on numeric field test, not the
 validator itself.

 Again, I'm still learning myself, so somebody that actually knows for
 sure would have to confirm, but that's be my guess.

 Adam

 On Thu, Mar 31, 2011 at 10:59 AM, Chris Norris
 thechrisproject.li...@gmail.com wrote:
 Well perhaps you can teach me a few things. I'm trying to figure out
 by what mechanism tapestry would be validating this. We generally
 specify our custom NumericValidator on numeric fields. Is there some
 sort of automatic validation that can occur? I don't see much mention
 of it on this page: http://tapestry.apache.org/input-validation.html

 On Thu, Mar 31, 2011 at 10:54 AM, Adam Zimowski zimowsk...@gmail.com wrote:
 No problem. Howard mentioned this may be a Tapestry bug. I'm in no
 immediate rush as my project isn't going live until next year, so
 hopefully by then it gets fixed.

 Adam

 On Thu, Mar 31, 2011 at 10:51 AM, Chris Norris
 thechrisproject.li...@gmail.com wrote:
 Sorry, I was completely wrong. I was looking at a NumericValidator
 that we wrote, not a Tapestry one.

 On Thu, Mar 31, 2011 at 9:43 AM, Adam Zimowski zimowsk...@gmail.com 
 wrote:
 My client side validation is disabled. This happens on my shopping
 cart page where I have multiple forms (inside a loop) with indexed
 trackers ( MapInteger, ValidationTracker. You can find complete code
 for the ShoppingCart page which exhibits this behavior in another
 thread which I posted recently:

 T5: form validation with pre-existing errors

 The actual numeric field which exhibits this is defined in the template 
 as:

 t:textfield t:id=quantity t:context=index
 label=prop:quantityLabel validate=required size=2/


       @Component(parameters = {tracker=tracker})
       private Form cartForm;

       @Persist(PersistenceConstants.FLASH)
       private MapInteger, ValidationTracker indexedTrackers;

 public ValidationTracker getTracker() {
               if(indexedTrackers == null) return new 
 ValidationTrackerImpl();
               return indexedTrackers.get(index);
       }

       public void setTracker(ValidationTracker aTracker) {

               if(indexedTrackers == null) {
                       if(log.isTraceEnabled()) log.trace(crating
 indexed trackers map);
                       indexedTrackers = new HashMapInteger,
 ValidationTracker();
               }

               if(log.isTraceEnabled()) {
                       log.trace(setting tracker for index:  + index);
               }

               indexedTrackers.put(index, aTracker);
       }

 In addition, this field carries a mixin:

 @Component(id=ID_QUANTITY_FIELD, parameters 
 ={AttachError.message=fieldError})
 @MixinClasses(value=AttachError.class)
 private TextField quantityField;

 @MixinAfter
 public class AttachError {

        @Parameter(required = true, allowNull = true)
        private String message;

        @Environmental
        private ValidationTracker tracker;

        @InjectContainer
        private Field field;


        void setupRender() {
                if (message != null) {
                        tracker.recordError(field, message);
                }
        }
 }

  public String getFieldError() {
               String error = null;
               ValidationTracker tracker = getTracker();
               if(tracker != null  tracker.getError(quantityField) != 
 null) {
                       return null;
               }
               CartItemBean cib = 
 findCartItem(cartDisplayItem.getLineNumber());

    // look up error in CartItemBean and if found return it, or return 
 null;

   return error;
 }

 Let me know, perhaps I am doing something wrong..

 Adam

 On Thu, Mar 31, 2011 at 9:03 AM, Chris Norris
 thechrisproject.li...@gmail.com wrote:
 The Tapestry NumericValidator seems to rely 

Re: T5: built-in numeric validator

2011-03-31 Thread Adam Zimowski
 I'm wondering what lead you to believe it would be automatically

Because if I define a TextField bound to numeric property without any
validation of my own whatsoever, Tapestry will validate non-numeric
input for me.

Adam

On Thu, Mar 31, 2011 at 1:24 PM, Chris Norris
thechrisproject.li...@gmail.com wrote:
 Now I'm all curious. After looking through
 FieldValidatorDefaultSource, FieldValidatorSource and the
 ValidationContstraintGenerator implementations, I'm not sure how a
 numeric field would automatically be validated as such. The Regexp
 validator is only reference in TapestryModule, which allows you to
 explicitly use it, but you're talking about something automatic.

 I'm wondering what lead you to believe it would be automatically
 generated in the first place? Though Howard's suggestion that it isn't
 working right seems to imply that it should be doing that...

 On Thu, Mar 31, 2011 at 11:04 AM, Adam Zimowski zimowsk...@gmail.com wrote:
 :) I don't think I'm in position to teach Tapestry to others, I'm
 still learning myself But, using Eclipse I looked at class
 hierarchy for:

 org.apache.tapestry5.AbstractValidator

 and see that Tapestry provides only the following out of the box:

 Email, Max, MaxLength, Min, MinLength, None, Regexp and Required

 So, just by guessing, I'd venture to say that Tapestry uses Regexp
 validator to test if numeric field contains indeed a numeric value.
 I'd also suspect that if there is a bug, it's probably in the regular
 expression passed to Regexp validator on numeric field test, not the
 validator itself.

 Again, I'm still learning myself, so somebody that actually knows for
 sure would have to confirm, but that's be my guess.

 Adam

 On Thu, Mar 31, 2011 at 10:59 AM, Chris Norris
 thechrisproject.li...@gmail.com wrote:
 Well perhaps you can teach me a few things. I'm trying to figure out
 by what mechanism tapestry would be validating this. We generally
 specify our custom NumericValidator on numeric fields. Is there some
 sort of automatic validation that can occur? I don't see much mention
 of it on this page: http://tapestry.apache.org/input-validation.html

 On Thu, Mar 31, 2011 at 10:54 AM, Adam Zimowski zimowsk...@gmail.com 
 wrote:
 No problem. Howard mentioned this may be a Tapestry bug. I'm in no
 immediate rush as my project isn't going live until next year, so
 hopefully by then it gets fixed.

 Adam

 On Thu, Mar 31, 2011 at 10:51 AM, Chris Norris
 thechrisproject.li...@gmail.com wrote:
 Sorry, I was completely wrong. I was looking at a NumericValidator
 that we wrote, not a Tapestry one.

 On Thu, Mar 31, 2011 at 9:43 AM, Adam Zimowski zimowsk...@gmail.com 
 wrote:
 My client side validation is disabled. This happens on my shopping
 cart page where I have multiple forms (inside a loop) with indexed
 trackers ( MapInteger, ValidationTracker. You can find complete code
 for the ShoppingCart page which exhibits this behavior in another
 thread which I posted recently:

 T5: form validation with pre-existing errors

 The actual numeric field which exhibits this is defined in the template 
 as:

 t:textfield t:id=quantity t:context=index
 label=prop:quantityLabel validate=required size=2/


       @Component(parameters = {tracker=tracker})
       private Form cartForm;

       @Persist(PersistenceConstants.FLASH)
       private MapInteger, ValidationTracker indexedTrackers;

 public ValidationTracker getTracker() {
               if(indexedTrackers == null) return new 
 ValidationTrackerImpl();
               return indexedTrackers.get(index);
       }

       public void setTracker(ValidationTracker aTracker) {

               if(indexedTrackers == null) {
                       if(log.isTraceEnabled()) log.trace(crating
 indexed trackers map);
                       indexedTrackers = new HashMapInteger,
 ValidationTracker();
               }

               if(log.isTraceEnabled()) {
                       log.trace(setting tracker for index:  + index);
               }

               indexedTrackers.put(index, aTracker);
       }

 In addition, this field carries a mixin:

 @Component(id=ID_QUANTITY_FIELD, parameters 
 ={AttachError.message=fieldError})
 @MixinClasses(value=AttachError.class)
 private TextField quantityField;

 @MixinAfter
 public class AttachError {

        @Parameter(required = true, allowNull = true)
        private String message;

        @Environmental
        private ValidationTracker tracker;

        @InjectContainer
        private Field field;


        void setupRender() {
                if (message != null) {
                        tracker.recordError(field, message);
                }
        }
 }

  public String getFieldError() {
               String error = null;
               ValidationTracker tracker = getTracker();
               if(tracker != null  tracker.getError(quantityField) != 
 null) {
                       return null;
               }
               CartItemBean cib = 
 

Re: T5: built-in numeric validator

2011-03-29 Thread Howard Lewis Ship
Seems like a bug to me!  Surprising, though. Is this server-side or
client-side validation?

On Tue, Mar 29, 2011 at 2:49 PM, Adam Zimowski zimowsk...@gmail.com wrote:
 For numeric fields, Tapestry validates correctly non-numeric input.
 However, input such as:

 1k
 1\
 etc..

 passes the validation.

 Am I missing something?

 Adam

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org





-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com

-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org



Re: T5: built-in numeric validator

2011-03-29 Thread Adam Zimowski
It is server side. Looks like if input starts with a digit, Tapestry is happy :)

Adam

On Tue, Mar 29, 2011 at 5:05 PM, Howard Lewis Ship hls...@gmail.com wrote:
 Seems like a bug to me!  Surprising, though. Is this server-side or
 client-side validation?

 On Tue, Mar 29, 2011 at 2:49 PM, Adam Zimowski zimowsk...@gmail.com wrote:
 For numeric fields, Tapestry validates correctly non-numeric input.
 However, input such as:

 1k
 1\
 etc..

 passes the validation.

 Am I missing something?

 Adam

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org





 --
 Howard M. Lewis Ship

 Creator of Apache Tapestry

 The source for Tapestry training, mentoring and support. Contact me to
 learn how I can get you up and productive in Tapestry fast!

 (971) 678-5210
 http://howardlewisship.com

 -
 To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
 For additional commands, e-mail: users-h...@tapestry.apache.org



-
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org