如题所述
ããValidatoræ¡æ¶æ¯ä¸ä¸ªç¬ç«çValidation Frameworkï¼ç®åå¨Struts1.1ä¸å¯ä»¥ä¸èµ·æå
ä¸è½½ãä½ä¸ºApache Commomçä¸ä¸ªOpenSourceï¼å®å¯ä»¥åStrutsä¸èµ·ç»å使ç¨ï¼ä¹å¯ä»¥åå
¶ä»éWebåºç¨ä¸ä½¿ç¨ãå段æ¶é´å©ç¨Eclipse3.02 + MyEclipse3.8.4ç»åXdocletå¼åäºä¸ä¸ªEJB + StrutsçWebåºç¨ï¼åç°éç¨è¿äºå·¥å
·å¼åæçè¿æ¯æ¯è¾é«çãMyEclipseéè¿xdocletçæCMP ejbçæ¶åä¼èªå¨å建对åºçValue Objectç±»ï¼ç»åstrutsæ¡æ¶æ¶ï¼å¯ä»¥æè¿Value Objectç»åStrutsä¸çForméç¨Composite模å¼ï¼éç¨å§æçæ¹å¼æ¥å®ç°ActionFormãè¿äºå¨Eclipse IDEä¸å®ç°é常快éãä½ä¹åå¨ä¸äºé®é¢ï¼å½JSP页é¢ä¸çFORMä¸çæ°æ®éè¿Strutsä¸çFormè¿å
¥å°å¯¹åºçValue Objectä¹åéè¦è¿è¡æ°æ®åæ³æ§æ ¡éªï¼èè¿ç§æ ¡éªå¨ä¸ä¸ªä¼ä¸çº§Webåºç¨ä¸ä¼åå¨å¤§éçéå¤åä½ä»£ç ï¼é æ大éçéå¤å·¥ä½åç»´æ¤çå·¥ä½éã
ããValidatoræ¯ä¸ä¸ªç¬ç«äºè¡¨ç°åä¸å¡é»è¾çä¸ä¸ªFrameWorkï¼å®éè¿é¢å®ä¹ä¸ç»æ ¡éªè§å以åæä¾äºä¸å¥ç®åçæ©å±æºå¶ï¼è®©ç¨åºåå¯ä»¥èªç±çå®ä¹èªå·±å¤æçæ ¡éªè§åãè§åä¸è§åå¯ä»¥æ¯ç¸äºä¾èµçï¼ä¹å¯ä»¥æ¯ç¬ç«çã
ããä¸é¢ä½¿ç¨ä¸ä¸ªç»å½çä¾åç®åè°è°å¦ä½è®©Validatoræ¡æ¶ä¸Strutsæ¡æ¶è¿è¡æ´åï¼ä»èææ°æ®æ ¡éªç¬ç«åºæ¥ï¼ä½¿å¾å¤§é¨åçæ ¡éªè§åå¾å°éç¨ï¼å¹¶ä¸ä½¿å¾æ ¡éªæ¹æ³å¯é ç½®ååæäºç»´æ¤ã
ãã1ãåå¤é ç½®æ件
ããè¿éè¦ç¨å°ä¸¤ä¸ªxmlæ件ï¼validator-rules.xmlåvalidation.xmlï¼åè ç¨äºå®ä¹æ ¡éªå¨ï¼å¨validatoræ¡æ¶ä¸å·²ç»é¢å®ä¹äºåå 个常ç¨çæ ¡éªå¨çå®ç°ï¼åè ç¨äºå®ä¹åStrutsæ¡æ¶ä¸å ·ä½çFormç¸å ³èçå个å段çæ ¡éªï¼è¿ä¸¤ä¸ªæ件æ¾ç½®å¨/WEB-INF/ç®å½ä¸é¢ã
ãã2ãåå¤StrutsçFormåAction
ããå®ä¹ä¸ä¸ªFormï¼è¿ä¸ªFormä»ValidatorFrom继æ¿èæ¥ï¼ç¼ºçä»ActionForm继æ¿ï¼ï¼å ·ä½ç代ç å¦ä¸ï¼
ãã//Created by MyEclipse Struts
ãã// XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_3.8.4/xslt/JavaClass.xsl
ããpackage com.test.struts.form;
ããimport javax.servlet.http.HttpServletRequest;
ããimport org.apache.struts.action.ActionMapping;
ããimport org.apache.struts.validator.ValidatorForm;
ãã/**
ãã* MyEclipse Struts
ãã* Creation date: 06-19-2005
ãã*
ãã* XDoclet definition:
ãã* @struts:form name="logonForm"
ãã*/
ããpublic class LogonForm extends ValidatorForm {
ããprivate String memberID;
ããprivate String password;
ãã
ãã/**
ãã* Method reset
ãã* @param mapping
ãã* @param request
ãã*/
ããpublic void reset(ActionMapping mapping, HttpServletRequest request) {
ããmemberID = null;
ããpassword = null;
ãã}
ãã/**
ãã* @return Returns the memberID.
ãã*/
ããpublic String getMemberID() {
ããreturn memberID;
ãã}
ãã/**
ãã* @param memberID The memberID to set.
ãã*/
ããpublic void setMemberID(String memberID) {
ããthis.memberID = memberID;
ãã}
ãã/**
ãã* @return Returns the password.
ãã*/
ããpublic String getPassword() {
ããreturn password;
ãã}
ãã/**
ãã* @param password The password to set.
ãã*/
ããpublic void setPassword(String password) {
ããthis.password = password;
ãã}
ãã}
ããå®ä¹ä¸ä¸ªActionï¼å ·ä½ç代ç å¦ä¸æ示ï¼
ãã//Created by MyEclipse Struts
ãã// XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_3.8.4/xslt/JavaClass.xsl
ããpackage com.test.struts.action;
ããimport javax.servlet.http.HttpServletRequest;
ããimport javax.servlet.http.HttpServletResponse;
ããimport org.apache.struts.action.Action;
ããimport org.apache.struts.action.ActionForm;
ããimport org.apache.struts.action.ActionForward;
ããimport org.apache.struts.action.ActionMapping;
ããimport com.test.struts.form.LogonForm;
ãã/**
ãã* MyEclipse Struts
ãã* Creation date: 06-19-2005
ãã*
ãã* XDoclet definition:
ãã* @struts:action path="/logon" name="logonForm" input="/jsp/logon.jsp" scope="request" validate="true"
ãã*/
ããpublic class LogonAction extends Action {
ãã
ãã/**
ãã* Method execute
ãã* @param mapping
ãã* @param form
ãã* @param request
ãã* @param response
ãã* @return ActionForward
ãã*/
ããpublic ActionForward execute(
ããActionMapping mapping,
ããActionForm form,
ããHttpServletRequest request,
ããHttpServletResponse response) {
ããLogonForm logonForm = (LogonForm) form;
ãã
ããreturn mapping.findForward("success");
ãã}
ãã}
ããFormBeanåActionå¨struts-config.xmlä¸çé ç½®å¦ä¸æ示ï¼
ãã<form-beans >
ãã<form-bean name="logonForm" type="com.test.struts.form.LogonForm" /> </form-beans>
ãã<action-mappings >
ãã<action
ããattribute="logonForm"
ããinput="/jsp/logon.jsp"
ããname="logonForm"
ããpath="/logon"
ããscope="request"
ããvalidate="true"
ããtype="com.test.struts.action.LogonAction">
ãã<forward name="success" path="/jsp/success.jsp"/>
ãã</action>
ãã</action-mappings>
ãã注æï¼å¨<action>å ç´ ä¸çvalidateå±æ§å¿ é设置为trueã
ãã3ãé ç½®validator-rules.xmlåvalidation.xmlæ件
ããvalidator-rules.xmlç¨äºé ç½®æ ¡éªå¨ï¼è¿ä¸ªæ件åºæ¬ä¸å¯ä»¥éç¨ãvalidation.xmlç¨äºé ç½®ä¸å ·ä½çForm Beanæå ³çæ ¡éªé ç½®ã
ããvalidator-rules.xml
ãã<form-validation>
ãã<global>
ãã<validator name="required"
ããclassname="org.apache.struts.validator.FieldChecks"
ããmethod="validateRequired"
ããmethodParams="java.lang.Object,
ããorg.apache.commons.validator.ValidatorAction,
ããorg.apache.commons.validator.Field,
ããorg.apache.struts.action.ActionErrors,
ããjavax.servlet.http.HttpServletRequest"
ããmsg="errors.required">
ãã......
ãã</global>
ãã</form-validation>
ãã
ããValidation.xml
ãã<form-validation>
ãã<!-- ========== Default Language Form Definitions ===================== -->
ãã<formset>
ãã<form name="logonForm">
ãã<field property="memberID"
ããdepends="required,short, minlength,maxlength">
ãã<arg0 key="prompt.memberID"/>
ãã<arg1 key="${var:minlength}" name="minlength"
ããresource="false"/>
ãã<arg2 key="${var:maxlength}" name="maxlength"
ããresource="false"/>
ãã<var>
ãã<var-name>maxlength</var-name>
ãã<var-value>16</var-value>
ãã</var>
ãã<var>
ãã<var-name>minlength</var-name>
ãã<var-value>3</var-value>
ãã</var>
ãã</field>
ãã<field property="password"
ããdepends="required, minlength,maxlength">
ãã<arg0 key="prompt.password"/>
ãã<arg1 key="${var:minlength}" name="minlength"
ããresource="false"/>
ãã<arg2 key="${var:maxlength}" name="maxlength"
ããresource="false"/>
ãã<var>
ãã<var-name>maxlength</var-name>
ãã<var-value>16</var-value>
ãã</var>
ãã<var>
ãã<var-name>minlength</var-name>
ãã<var-value>3</var-value>
ãã</var>
ãã</field>
ãã</form>
ãã</formset>
ãã</form-validation>
ãã4ãå®ä¹èµæºæ件ApplicationResources.properties
ããé¦å ï¼èµæºæä»¶å¿ é¡»è¦å¨struts-config.xmlæ件ä¸è¿è¡å®ä¹ï¼
ãã<message-resources parameter="com.test.struts.ApplicationResources" />
ããä¸é¢æ¯èµæºæ件ä¸çå 容ï¼å®ä¸»è¦å ³èå°ï¼
ããvalidator-rules.xmlæ件ä¸<validator>å ç´ ä¸çmsgå±æ§ï¼
ããvalidation.xmlä¸fieldå ç´ ä¸ä½ä¸ºåæ°ä¼ éç»validatoræ¡æ¶çarg0 -- arg3ã
ãã# Resources for parameter 'com.test.struts.ApplicationResources'
ãã# Project P/ValidatorWeb
ããerrors.header=<span class="error-header1">Errors:</span><br><span class="error-header2">You must correct the following error(s) before processing.</span><ul>
ããerrors.footer=</ul>
ããerrors.prefix=<li><span class="error-text">
ããerrors.suffix=</span></li>
ããprompt.memberID=Member ID
ããprompt.password=Password
ããprompt.test=test
ãã# Standard error messages for validator framework checks
ããerrors.required={0} is required.
ããerrors.minlength={0} cannot be less than {1} characters.
ããerrors.maxlength={0} cannot be greater than {2} characters.
ããerrors.invalid={0} is invalid.
ããerrors.byte={0} must be an byte.
ããerrors.short={0} must be an short.
ããerrors.integer={0} must be an integer.
ããerrors.long={0} must be an long.
ããerrors.float={0} must be an float.
ããerrors.double={0} must be an double.
ããerrors.date={0} is not a date.
ããerrors.range={0} is not in the range {1} through {2}.
ããerrors.creditcard={0} is not a valid credit card number.
ããerrors.email={0} is an invalid e-mail address.
ãã5ãå¨struts-config.xmlä¸é ç½®validator
ããå¿ é¡»å¨struts-config.xmlä¸ä»¥pluginçæ¹å¼æå®validatorçé ç½®èµæºï¼è¿æ ·ï¼webåºç¨å¨è½å¤æ ¹æ®è¿äºé ç½®æåç§æ ¡éªå¨çèµæºå è½½å°å åä¸ã
ãã<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
ãã<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
ãã</plug-in>
ãã6ãå¨ç¸å ³çJSPæ件ä¸éè¿Strutsæ¡æ¶ä¸çhtmlæ ç¾å¶è®¢ç¸åºçå±æ§å¼
ãã<html:javascript dynamicJavascript="true"
ããformName="logonForm"
ããstaticJavascript="false"/>
ããè¿ä¸ªæ ç¾ç¨äºå¨å ·ä½çjspçæç客æ·ç«¯html页é¢ä¸çæä¸æ®µå¯¹åºçjavascript代ç ã
ãã<html:form action="/logon" focus="memberID"
ããonsubmit="return validateLogonForm(this);">
ãã</html:form>
ããç¨äºå½ç¨æ·ç¹å»<html:form>ä¸çsubmitæé®æ¶ï¼ä¼æ§è¡ç¸åºçæ£æ¥ï¼å¦ææ£æ¥æ²¡æéè¿ï¼åä¸åå»è°ç¨Actionä¸çexecuteæ¹æ³ã
ããValidatoræ¯ä¸ä¸ªç¬ç«äºè¡¨ç°åä¸å¡é»è¾çä¸ä¸ªFrameWorkï¼å®éè¿é¢å®ä¹ä¸ç»æ ¡éªè§å以åæä¾äºä¸å¥ç®åçæ©å±æºå¶ï¼è®©ç¨åºåå¯ä»¥èªç±çå®ä¹èªå·±å¤æçæ ¡éªè§åãè§åä¸è§åå¯ä»¥æ¯ç¸äºä¾èµçï¼ä¹å¯ä»¥æ¯ç¬ç«çã
ããä¸é¢ä½¿ç¨ä¸ä¸ªç»å½çä¾åç®åè°è°å¦ä½è®©Validatoræ¡æ¶ä¸Strutsæ¡æ¶è¿è¡æ´åï¼ä»èææ°æ®æ ¡éªç¬ç«åºæ¥ï¼ä½¿å¾å¤§é¨åçæ ¡éªè§åå¾å°éç¨ï¼å¹¶ä¸ä½¿å¾æ ¡éªæ¹æ³å¯é ç½®ååæäºç»´æ¤ã
ãã1ãåå¤é ç½®æ件
ããè¿éè¦ç¨å°ä¸¤ä¸ªxmlæ件ï¼validator-rules.xmlåvalidation.xmlï¼åè ç¨äºå®ä¹æ ¡éªå¨ï¼å¨validatoræ¡æ¶ä¸å·²ç»é¢å®ä¹äºåå 个常ç¨çæ ¡éªå¨çå®ç°ï¼åè ç¨äºå®ä¹åStrutsæ¡æ¶ä¸å ·ä½çFormç¸å ³èçå个å段çæ ¡éªï¼è¿ä¸¤ä¸ªæ件æ¾ç½®å¨/WEB-INF/ç®å½ä¸é¢ã
ãã2ãåå¤StrutsçFormåAction
ããå®ä¹ä¸ä¸ªFormï¼è¿ä¸ªFormä»ValidatorFrom继æ¿èæ¥ï¼ç¼ºçä»ActionForm继æ¿ï¼ï¼å ·ä½ç代ç å¦ä¸ï¼
ãã//Created by MyEclipse Struts
ãã// XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_3.8.4/xslt/JavaClass.xsl
ããpackage com.test.struts.form;
ããimport javax.servlet.http.HttpServletRequest;
ããimport org.apache.struts.action.ActionMapping;
ããimport org.apache.struts.validator.ValidatorForm;
ãã/**
ãã* MyEclipse Struts
ãã* Creation date: 06-19-2005
ãã*
ãã* XDoclet definition:
ãã* @struts:form name="logonForm"
ãã*/
ããpublic class LogonForm extends ValidatorForm {
ããprivate String memberID;
ããprivate String password;
ãã
ãã/**
ãã* Method reset
ãã* @param mapping
ãã* @param request
ãã*/
ããpublic void reset(ActionMapping mapping, HttpServletRequest request) {
ããmemberID = null;
ããpassword = null;
ãã}
ãã/**
ãã* @return Returns the memberID.
ãã*/
ããpublic String getMemberID() {
ããreturn memberID;
ãã}
ãã/**
ãã* @param memberID The memberID to set.
ãã*/
ããpublic void setMemberID(String memberID) {
ããthis.memberID = memberID;
ãã}
ãã/**
ãã* @return Returns the password.
ãã*/
ããpublic String getPassword() {
ããreturn password;
ãã}
ãã/**
ãã* @param password The password to set.
ãã*/
ããpublic void setPassword(String password) {
ããthis.password = password;
ãã}
ãã}
ããå®ä¹ä¸ä¸ªActionï¼å ·ä½ç代ç å¦ä¸æ示ï¼
ãã//Created by MyEclipse Struts
ãã// XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_3.8.4/xslt/JavaClass.xsl
ããpackage com.test.struts.action;
ããimport javax.servlet.http.HttpServletRequest;
ããimport javax.servlet.http.HttpServletResponse;
ããimport org.apache.struts.action.Action;
ããimport org.apache.struts.action.ActionForm;
ããimport org.apache.struts.action.ActionForward;
ããimport org.apache.struts.action.ActionMapping;
ããimport com.test.struts.form.LogonForm;
ãã/**
ãã* MyEclipse Struts
ãã* Creation date: 06-19-2005
ãã*
ãã* XDoclet definition:
ãã* @struts:action path="/logon" name="logonForm" input="/jsp/logon.jsp" scope="request" validate="true"
ãã*/
ããpublic class LogonAction extends Action {
ãã
ãã/**
ãã* Method execute
ãã* @param mapping
ãã* @param form
ãã* @param request
ãã* @param response
ãã* @return ActionForward
ãã*/
ããpublic ActionForward execute(
ããActionMapping mapping,
ããActionForm form,
ããHttpServletRequest request,
ããHttpServletResponse response) {
ããLogonForm logonForm = (LogonForm) form;
ãã
ããreturn mapping.findForward("success");
ãã}
ãã}
ããFormBeanåActionå¨struts-config.xmlä¸çé ç½®å¦ä¸æ示ï¼
ãã<form-beans >
ãã<form-bean name="logonForm" type="com.test.struts.form.LogonForm" /> </form-beans>
ãã<action-mappings >
ãã<action
ããattribute="logonForm"
ããinput="/jsp/logon.jsp"
ããname="logonForm"
ããpath="/logon"
ããscope="request"
ããvalidate="true"
ããtype="com.test.struts.action.LogonAction">
ãã<forward name="success" path="/jsp/success.jsp"/>
ãã</action>
ãã</action-mappings>
ãã注æï¼å¨<action>å ç´ ä¸çvalidateå±æ§å¿ é设置为trueã
ãã3ãé ç½®validator-rules.xmlåvalidation.xmlæ件
ããvalidator-rules.xmlç¨äºé ç½®æ ¡éªå¨ï¼è¿ä¸ªæ件åºæ¬ä¸å¯ä»¥éç¨ãvalidation.xmlç¨äºé ç½®ä¸å ·ä½çForm Beanæå ³çæ ¡éªé ç½®ã
ããvalidator-rules.xml
ãã<form-validation>
ãã<global>
ãã<validator name="required"
ããclassname="org.apache.struts.validator.FieldChecks"
ããmethod="validateRequired"
ããmethodParams="java.lang.Object,
ããorg.apache.commons.validator.ValidatorAction,
ããorg.apache.commons.validator.Field,
ããorg.apache.struts.action.ActionErrors,
ããjavax.servlet.http.HttpServletRequest"
ããmsg="errors.required">
ãã......
ãã</global>
ãã</form-validation>
ãã
ããValidation.xml
ãã<form-validation>
ãã<!-- ========== Default Language Form Definitions ===================== -->
ãã<formset>
ãã<form name="logonForm">
ãã<field property="memberID"
ããdepends="required,short, minlength,maxlength">
ãã<arg0 key="prompt.memberID"/>
ãã<arg1 key="${var:minlength}" name="minlength"
ããresource="false"/>
ãã<arg2 key="${var:maxlength}" name="maxlength"
ããresource="false"/>
ãã<var>
ãã<var-name>maxlength</var-name>
ãã<var-value>16</var-value>
ãã</var>
ãã<var>
ãã<var-name>minlength</var-name>
ãã<var-value>3</var-value>
ãã</var>
ãã</field>
ãã<field property="password"
ããdepends="required, minlength,maxlength">
ãã<arg0 key="prompt.password"/>
ãã<arg1 key="${var:minlength}" name="minlength"
ããresource="false"/>
ãã<arg2 key="${var:maxlength}" name="maxlength"
ããresource="false"/>
ãã<var>
ãã<var-name>maxlength</var-name>
ãã<var-value>16</var-value>
ãã</var>
ãã<var>
ãã<var-name>minlength</var-name>
ãã<var-value>3</var-value>
ãã</var>
ãã</field>
ãã</form>
ãã</formset>
ãã</form-validation>
ãã4ãå®ä¹èµæºæ件ApplicationResources.properties
ããé¦å ï¼èµæºæä»¶å¿ é¡»è¦å¨struts-config.xmlæ件ä¸è¿è¡å®ä¹ï¼
ãã<message-resources parameter="com.test.struts.ApplicationResources" />
ããä¸é¢æ¯èµæºæ件ä¸çå 容ï¼å®ä¸»è¦å ³èå°ï¼
ããvalidator-rules.xmlæ件ä¸<validator>å ç´ ä¸çmsgå±æ§ï¼
ããvalidation.xmlä¸fieldå ç´ ä¸ä½ä¸ºåæ°ä¼ éç»validatoræ¡æ¶çarg0 -- arg3ã
ãã# Resources for parameter 'com.test.struts.ApplicationResources'
ãã# Project P/ValidatorWeb
ããerrors.header=<span class="error-header1">Errors:</span><br><span class="error-header2">You must correct the following error(s) before processing.</span><ul>
ããerrors.footer=</ul>
ããerrors.prefix=<li><span class="error-text">
ããerrors.suffix=</span></li>
ããprompt.memberID=Member ID
ããprompt.password=Password
ããprompt.test=test
ãã# Standard error messages for validator framework checks
ããerrors.required={0} is required.
ããerrors.minlength={0} cannot be less than {1} characters.
ããerrors.maxlength={0} cannot be greater than {2} characters.
ããerrors.invalid={0} is invalid.
ããerrors.byte={0} must be an byte.
ããerrors.short={0} must be an short.
ããerrors.integer={0} must be an integer.
ããerrors.long={0} must be an long.
ããerrors.float={0} must be an float.
ããerrors.double={0} must be an double.
ããerrors.date={0} is not a date.
ããerrors.range={0} is not in the range {1} through {2}.
ããerrors.creditcard={0} is not a valid credit card number.
ããerrors.email={0} is an invalid e-mail address.
ãã5ãå¨struts-config.xmlä¸é ç½®validator
ããå¿ é¡»å¨struts-config.xmlä¸ä»¥pluginçæ¹å¼æå®validatorçé ç½®èµæºï¼è¿æ ·ï¼webåºç¨å¨è½å¤æ ¹æ®è¿äºé ç½®æåç§æ ¡éªå¨çèµæºå è½½å°å åä¸ã
ãã<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
ãã<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
ãã</plug-in>
ãã6ãå¨ç¸å ³çJSPæ件ä¸éè¿Strutsæ¡æ¶ä¸çhtmlæ ç¾å¶è®¢ç¸åºçå±æ§å¼
ãã<html:javascript dynamicJavascript="true"
ããformName="logonForm"
ããstaticJavascript="false"/>
ããè¿ä¸ªæ ç¾ç¨äºå¨å ·ä½çjspçæç客æ·ç«¯html页é¢ä¸çæä¸æ®µå¯¹åºçjavascript代ç ã
ãã<html:form action="/logon" focus="memberID"
ããonsubmit="return validateLogonForm(this);">
ãã</html:form>
ããç¨äºå½ç¨æ·ç¹å»<html:form>ä¸çsubmitæé®æ¶ï¼ä¼æ§è¡ç¸åºçæ£æ¥ï¼å¦ææ£æ¥æ²¡æéè¿ï¼åä¸åå»è°ç¨Actionä¸çexecuteæ¹æ³ã
温馨提示:答案为网友推荐,仅供参考