1 15 package org.apache.tapestry.form.validator; 16 17 import org.apache.tapestry.IMarkupWriter; 18 import org.apache.tapestry.IRequestCycle; 19 import org.apache.tapestry.form.FormComponentContributorContext; 20 import org.apache.tapestry.form.IFormComponent; 21 import org.apache.tapestry.form.ValidationMessages; 22 import org.apache.tapestry.valid.ValidationConstraint; 23 import org.apache.tapestry.valid.ValidationStrings; 24 import org.apache.tapestry.valid.ValidatorException; 25 26 32 public class Max extends BaseValidator 33 { 34 private double _max; 35 36 public Max() 37 { 38 } 39 40 public Max(String initializer) 41 { 42 super(initializer); 43 } 44 45 48 49 public void validate(IFormComponent field, ValidationMessages messages, Object object) 50 throws ValidatorException 51 { 52 Number value = (Number ) object; 53 54 if (value.doubleValue() > _max) 55 throw new ValidatorException(buildMessage(messages, field), 56 ValidationConstraint.TOO_LARGE); 57 } 58 59 private String buildMessage(ValidationMessages messages, IFormComponent field) 60 { 61 return messages.formatValidationMessage( 62 getMessage(), 63 ValidationStrings.VALUE_TOO_LARGE, 64 new Object [] 65 { field.getDisplayName(), new Double (_max) }); 66 } 67 68 public void renderContribution(IMarkupWriter writer, IRequestCycle cycle, 69 FormComponentContributorContext context, IFormComponent field) 70 { 71 context.includeClasspathScript("/org/apache/tapestry/form/validator/NumberValidator.js"); 72 73 String message = buildMessage(context, field); 74 75 StringBuffer buffer = new StringBuffer ("function(event) { validate_max_number(event, "); 76 buffer.append(context.getFieldDOM()); 77 buffer.append(", "); 78 buffer.append(_max); 79 buffer.append(", '"); 80 buffer.append(message); 81 buffer.append("'); }"); 82 83 context.addSubmitListener(buffer.toString()); 84 } 85 86 public void setMax(double max) 87 { 88 _max = max; 89 } 90 91 } 92 | Popular Tags |