java代码: |
package com. tomxp. web. components. valid; import org. apache. tapestry. ApplicationRuntimeException; import org. apache. tapestry. IForm; import org. apache. tapestry. IMarkupWriter; import org. apache. tapestry. IRequestCycle; import org. apache. tapestry. Tapestry; import org. apache. tapestry. form. TextArea; import org. apache. tapestry. valid. IValidationDelegate; import org. apache. tapestry. valid. IValidator; import org. apache. tapestry. valid. ValidatorException; /** * @author Peter Butler */ public abstract class ValidTextArea extends TextArea { WriterErrorDecorator myWriter = new WriterErrorDecorator (this ); public ValidTextArea ( ) { super ( ); } public abstract IValidator getValidator ( ); public abstract String getDisplayName ( ); protected void renderComponent (IMarkupWriter writer, IRequestCycle cycle ) { IForm form = getForm (cycle ); IValidationDelegate delegate = form. getDelegate ( ); if (delegate == null ) throw new ApplicationRuntimeException (Tapestry. format ("ValidTextArea. no-delegate", getExtendedId ( ), getForm ( ). getExtendedId ( ) ), this, null, null ); IValidator validator = getValidator ( ); if (validator == null ) throw Tapestry. createRequiredParameterException (this, "validator" ); boolean rendering = !cycle. isRewinding ( ); IMarkupWriter superWriter; if (rendering ) { delegate. writePrefix (writer, cycle, this, validator ); myWriter. init (writer, delegate, validator, cycle ); superWriter = myWriter; } else { superWriter = writer; } super. renderComponent (superWriter, cycle ); String name = getName ( ); if (!rendering && !isDisabled ( ) ) { String value = cycle. getRequestContext ( ). getParameter (name ); updateValue (value ); } if (rendering ) { delegate. writeSuffix (writer, cycle, this, validator ); myWriter. clear ( ); } } protected void updateValue ( String value ) { Object objectValue = null; IValidationDelegate delegate = getForm ( ). getDelegate ( ); delegate. recordFieldInputValue (value ); try { objectValue = getValidator ( ). toObject (this, value ); } catch (ValidatorException ex ) { delegate. record (ex ); return; } setValue ( ( String )objectValue ); } } |
java代码: |
<?xml version=" 1. 0" encoding="UTF- 8"?> <!DOCTYPE component-specification PUBLIC "- //Apache Software Foundation//Tapestry Specification 3.0//EN" "http: //jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd"> <!-- generated by Spindle, http: //spindle.sourceforge.net --> <component-specification class="com. tomxp. web. components. valid. ValidTextArea" allow-body="no"> <description> A multi-line valid text area. </description> <parameter name="value" type="java. lang. String" required="yes" direction="form"/> <parameter name="disabled" type=" boolean" direction="in"/> <parameter name="validator" type="org. apache. tapestry. valid. IValidator" required="yes" direction="in"> <description> Converts value to a string and parses strings back into object values. </description> </parameter> <parameter name="displayName" type="java. lang. String" required="yes" direction="auto"> <description> Name used by FieldLabel and when generating validation error messages. </description> </parameter> <reserved-parameter name="name"/> <property-specification name="name" type="java. lang. String"/> <property-specification name="form" type="org. apache. tapestry. IForm"/> </component-specification> |
java代码: |
package com. tomxp. web. components. valid; import org. apache. tapestry. IMarkupWriter; import org. apache. tapestry. IRequestCycle; import org. apache. tapestry. form. IFormComponent; import org. apache. tapestry. valid. IValidationDelegate; import org. apache. tapestry. valid. IValidator; /** * @author Peter Butler */ public class WriterErrorDecorator implements IMarkupWriter { private IMarkupWriter actual; private IValidationDelegate delegate; private IValidator validator; private IRequestCycle cycle; private IFormComponent field; public WriterErrorDecorator (IFormComponent field ) { this. field = field; } public void init (IMarkupWriter actual, IValidationDelegate delegate, IValidator validator, IRequestCycle cycle ) { this. actual = actual; this. delegate = delegate; this. validator = validator; this. cycle = cycle; } public void clear ( ) { this. actual = null; this. delegate = null; this. validator = null; this. cycle = null; } public void attribute ( String name, int value ) { actual. attribute (name, value ); } public void attribute ( String name, boolean value ) { actual. attribute (name, value ); } public void attribute ( String name, String value ) { actual. attribute (name, value ); } public void attributeRaw ( String name, String value ) { actual. attributeRaw (name, value ); } public void begin ( String name ) { actual. begin (name ); validator. renderValidatorContribution (field, this, cycle ); delegate. writeAttributes (this, cycle, field, validator ); } public void beginEmpty ( String name ) { actual. beginEmpty (name ); validator. renderValidatorContribution (field, this, cycle ); delegate. writeAttributes (this, cycle, field, validator ); } public boolean checkError ( ) { return actual. checkError ( ); } public void close ( ) { actual. close ( ); } public void closeTag ( ) { actual. closeTag ( ); } public void comment ( String value ) { actual. comment (value ); } public void end ( ) { actual. end ( ); } public void end ( String name ) { actual. end (name ); } public void flush ( ) { actual. flush ( ); } public IMarkupWriter getNestedWriter ( ) { return actual. getNestedWriter ( ); } public void print (char [ ] data, int offset, int length ) { actual. print (data, offset, length ); } public void print (char value ) { actual. print (value ); } public void print ( int value ) { actual. print (value ); } public void print ( String value ) { actual. print (value ); } public void println ( ) { actual. println ( ); } public void printRaw (char [ ] buffer, int offset, int length ) { actual. printRaw (buffer, offset, length ); } public void printRaw ( String value ) { actual. printRaw (value ); } public String getContentType ( ) { return actual. getContentType ( ); } } |
java代码: |
<?xml version=" 1. 0" encoding="GBK"?> <!-- $Id: DatePicker. script,v 1. 5 2004/ 03/ 09 18: 23: 50 hlship Exp $ --> <!DOCTYPE script PUBLIC "- //Apache Software Foundation//Tapestry Script Specification 3.0//EN" "http: //jakarta.apache.org/tapestry/dtd/Script_3_0.dtd"> <script> <!-- input symbols: textAreaScript: The TextAreaScript component. output symbols: formValidateFunction The name of a form validator function that validates the fields. --> <include-script resource-path="/org/apache/tapestry/valid/Validator. js"/> <input-symbol key="textAreaScript" class="com. cdmcs. tapestry. jwc. TextAreaScript"/> <set key="name" expression="textAreaScript. name"/> <set key="required" expression="textAreaScript. required"/> <set key="minimumLength" expression="textAreaScript. minimumLength"/> <set key="maximumLength" expression="textAreaScript. maximumLength"/> <set key="requiredMessage" expression="textAreaScript. requiredMessage"/> <set key="minimumLengthMessage" expression="textAreaScript. minimumLengthMessage"/> <set key="maximumLengthMessage" expression="textAreaScript. maximumLengthMessage"/> <set key="numberFormatEnable" expression="textAreaScript. numberFormatEnable"/> <set key="numberLengthMessage" expression="textAreaScript. numberLengthMessage"/> <set key="numberLength" expression="textAreaScript. numberLength"/> <let key="baseName"> document.$ {textAreaScript. form. name }.$ {name } </let> <let key="formValidateFunction" unique="yes"> validate_$ {name } </let> <body> <! [CDATA [ function $ {formValidateFunction } ( ) { var field = $ {baseName }; var keycode = window. event. keyCode; if ( $ {numberFormatEnable } && !field. value. match (/^/d { 11 }$/ ) ) { if ( field. value. length == 0 ) return true; return validator_invalid_field (field, "$ {numberLengthMessage }" ); } if ( $ {required } && field. value. length== 0 ) { return validator_invalid_field (field, "$ {requiredMessage }" ); } if ( $ {required } && field. value. length<$ {minimumLength } ) { return validator_invalid_field (field, "$ {minimumLengthMessage }" ); } if ( $ {required } && field. value. length>$ {maximumLength } ) { return validator_invalid_field (field, "$ {maximumLengthMessage }" ); } return true; } ] ]> </body> </script> |