My client side validation is disabled. This happens on my shopping
cart page where I have multiple forms (inside a loop) with indexed
trackers ( Map<Integer, 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 Map<Integer, 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 HashMap<Integer,
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

Reply via email to