亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? validationtaglib.groovy

?? grails用戶使用指南
?? GROOVY
字號(hào):
/* Copyright 2004-2005 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT c;pWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */import org.springframework.validation.Errors;import org.springframework.context.NoSuchMessageException;import org.springframework.web.servlet.support.RequestContextUtils as RCU;import org.codehaus.groovy.grails.commons.GrailsClassUtils as GCU;/***  A  tag lib that provides tags to handle validation and errors** @author Graeme Rocher* @since 17-Jan-2006*/class ValidationTagLib {    /**     * Checks if the request has errors either for a field or global errors     */    def hasErrors = { attrs, body ->        def model = attrs['model']        def checkList = []        if(model) {            checkList = model.findAll { k,v ->                grailsApplication.isGrailsDomainClass(v.class)            }        }        if(attrs['bean']) {            checkList << attrs['bean']        }        else {			if(request.attributeNames) {				request.attributeNames.each { ra ->					if(ra) {                        if(ra instanceof Errors)                            checkList << ra                        else if(grailsApplication.isGrailsDomainClass(ra.class))                            checkList << ra					}				}			}        }        for(i in checkList) {            def errors = null            if(grailsApplication.isGrailsDomainClass(i.class)) {                if(i.hasErrors())                    errors = i.errors            }            else if(i instanceof Errors) {               errors = i            }            if(errors) {                if(attrs['field']) {                    if(errors.hasFieldErrors(attrs['field'])) {                        body()                    }                }                else {                    body()                }            }        }    }    /**     * Loops through each error for either field or global errors     */    def eachError = { attrs, body ->        def model = attrs['model']        def errorList = []        if(model) {            errorList = model.findAll { k,v ->                grailsApplication.isGrailsDomainClass(v.class)            }        }        if(attrs['bean']) {            errorList << attrs['bean']        }        else {            request.attributeNames.each {                def ra = request[it]                if(ra) {                    if(ra instanceof Errors)                        errorList << ra                    else if(grailsApplication.isGrailsDomainClass(ra.class))                        errorList << ra                }            }        }        for(i in errorList) {            def errors = null            if(grailsApplication.isGrailsDomainClass(i.class)) {                if(i.hasErrors())                    errors = i.errors            }            else if(i instanceof Errors) {               errors = i            }            if(errors && errors.hasErrors()) {                if(attrs['field']) {                    if(errors.hasFieldErrors(attrs['field'])) {                        errors.getFieldErrors( attrs["field"] ).each {                            body(it)                        }                    }                }                else {                    errors.allErrors.each {                        body( it )                    }                }            }        }    }    /**     * Loops through each error and renders it using one of the supported mechanisms (defaults to "list" if unsupported)     */    def renderErrors = { attrs, body ->        def renderAs = attrs.remove('as')        if(!renderAs) renderAs = 'list'        if(renderAs == 'list') {            out << "<ul>"            eachError(attrs, {                out << "<li>"                message(error:it)                out << "</li>"              }            )            out << "</ul>"        }    }    /**     * Resolves a message code for a given error or code from the resource bundle     */    def message = { attrs ->          def messageSource = grailsAttributes                                .getApplicationContext()                                .getBean("messageSource")          def locale = RCU.getLocale(request)          if(attrs['error']) {                def error = attrs['error']                def defaultMessage = ( attrs['default'] ? attrs['default'] : error.defaultMessage )                def message = messageSource.getMessage( error.code,                                                        error.arguments,                                                        defaultMessage,                                                        locale )                if(message) {                    out << message                }                else {                    out << error.code                }          }          if(attrs['code']) {                def code = attrs['code']                def args = attrs['args']                 def defaultMessage = ( attrs['default'] ? attrs['default'] : code )                def message = messageSource.getMessage( code,                                                        args == null ? null : args.toArray(),                                                        defaultMessage,                                                        locale )                if(message) {                    out << message                }                else {                    out << code                }          }    }    // Maps out how Grails contraints map to Apache commons validators    static CONSTRAINT_TYPE_MAP = [ email : 'email',                                             creditCard : 'creditCard',                                             match : 'mask',                                             blank: 'required',                                             nullable: 'required',                                             maxSize: 'maxLength',                                             minSize: 'minLength',                                             range: 'intRange',                                             size: 'intRange',                                             length: 'maxLength,minLength' ]    /**     * Validates a form using Apache commons validator javascript against constraints defined in a Grails     * domain class     *     * TODO: This tag is a work in progress     */    def validate = { attrs, body ->        def form = attrs["form"]        def againstClass = attrs["against"]        if(!form)            throwTagError("Tag [validate] is missing required attribute [form]")        if(!againstClass) {            againstClass = form.substring(0,1).toUpperCase() + form.substring(1)        }        def app = grailsAttributes.getGrailsApplication()        def dc = app.getGrailsDomainClass(againstClass)        if(!dc)            throwTagError("Tag [validate] could not find a domain class to validate against for name [${againstClass}]")        def constrainedProperties = dc.constrainedProperties.collect { k,v -> return v }        def appliedConstraints = []        constrainedProperties.each {           appliedConstraints += it.collect{ it.appliedConstraints }        }        appliedConstraints = appliedConstraints.flatten()        def fieldValidations = [:]        appliedConstraints.each {            def validateType = CONSTRAINT_TYPE_MAP[it.name]            if(validateType) {                if(fieldValidations[validateType]) {                    fieldValidations[validateType] << it                }                else {                     fieldValidations[validateType] =  [it]                }            }        }        out << '<script type="text/javascript">\n'        fieldValidations.each { k,v ->           def validateType = k           if(validateType) {                def validateTypes = [validateType]                if(validateType.contains(",")) {                    validateTypes = validateType.split(",")                }                validateTypes.each { vt ->                    // import required script                    def scriptName = "org/apache/commons/validator/javascript/validate" + vt.substring(0,1).toUpperCase() + vt.substring(1) + ".js"                    def inStream = getClass().classLoader.getResourceAsStream(scriptName)                    if(inStream) {                        out << inStream.text                    }                    out << "function ${form}_${vt}() {"                    v.each { constraint ->                           out << "this.${constraint.propertyName} = new Array("                           out << "document.forms['${form}'].elements['${constraint.propertyName}']," // the field                           out << '"Test message"' // TODO: Resolve the actual message                           switch(vt) {                                case 'mask': out << ",function() { return '${constraint.regex}'; }";break;                                case 'intRange': out << ",function() { if(arguments[0]=='min') return ${constraint.range.from}; else return ${constraint.range.to} }";break;                                case 'floatRange': out << ",function() { if(arguments[0]=='min') return ${constraint.range.from}; else return ${constraint.range.to} }";break;                                case 'maxLength': out << ",function() { return ${constraint.maxSize};  }";break;                                case 'minLength': out << ",function() { return ${constraint.minSize};  }";break;                           }                           out << ');\n'                    }                    out << "}\n"                }            }        }        out << 'function validateForm(form) {\n'         fieldValidations.each { k,v ->               def validateType = k.substring(0,1).toUpperCase() + k.substring(1)               out << "if(!validate${validateType}(form)) return false;\n"         }        out << 'return true;\n';        out << '}\n'      //  out << "document.forms['${attrs['form']}'].onsubmit = function(e) {return validateForm(this)}\n"        out << '</script>'    }}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
岛国一区二区在线观看| 国产清纯美女被跳蛋高潮一区二区久久w | 美女爽到高潮91| 男男gaygay亚洲| 美女网站色91| 国产福利一区在线观看| 国产精品亚洲第一区在线暖暖韩国| 国产做a爰片久久毛片| 国产高清久久久久| 国产69精品一区二区亚洲孕妇 | 欧美日韩国产大片| 欧美一区二区三区喷汁尤物| 8v天堂国产在线一区二区| 欧美一二三四区在线| 精品国产一区二区三区久久久蜜月| 欧美精品一区二区三区四区 | 久久精品国产99| 国产剧情av麻豆香蕉精品| 成人开心网精品视频| 91啪亚洲精品| 欧美人体做爰大胆视频| 26uuu欧美| 亚洲人成在线播放网站岛国| 亚洲最大的成人av| 奇米影视一区二区三区小说| 国产精品一区在线| 色先锋资源久久综合| 91精品国产美女浴室洗澡无遮挡| 精品久久久三级丝袜| 国产精品久久久99| 亚洲成av人在线观看| 狠狠网亚洲精品| 99精品久久免费看蜜臀剧情介绍| 欧美网站大全在线观看| 精品国产欧美一区二区| 一区视频在线播放| 日本不卡高清视频| eeuss鲁一区二区三区| 欧美日精品一区视频| 久久久精品蜜桃| 亚洲国产乱码最新视频| 国产精品亚洲人在线观看| 欧美在线一区二区| 久久久久久久久久久久久久久99| 一区二区三区自拍| 国产一区亚洲一区| 欧美日韩视频在线观看一区二区三区| 欧美成人性战久久| 亚洲人午夜精品天堂一二香蕉| 日本不卡免费在线视频| 91视频.com| 久久亚洲精华国产精华液| 亚洲一本大道在线| 成人综合婷婷国产精品久久免费| 欧美精品在欧美一区二区少妇| 久久精品人人做人人综合 | 久久99精品久久久| 一本到三区不卡视频| 国产亚洲一区字幕| 日韩影院免费视频| 色哟哟欧美精品| 国产欧美一区二区精品性色| 亚洲成人免费在线观看| www.欧美.com| 久久久国际精品| 免费的成人av| 欧美人与z0zoxxxx视频| 亚洲女女做受ⅹxx高潮| 成人午夜私人影院| 精品欧美一区二区在线观看| 亚洲国产精品久久久久婷婷884| 成人动漫av在线| 国产亚洲一本大道中文在线| 偷窥国产亚洲免费视频| 一本到三区不卡视频| 国产精品毛片高清在线完整版| 极品少妇一区二区| 91精品欧美福利在线观看| 亚洲第一精品在线| 91九色02白丝porn| 亚洲视频1区2区| aaa欧美色吧激情视频| 久久久噜噜噜久久人人看 | 欧美自拍丝袜亚洲| 中文字幕色av一区二区三区| 国产成人日日夜夜| 久久久久亚洲综合| 国产老肥熟一区二区三区| 欧美成人猛片aaaaaaa| 日韩高清一区二区| 538prom精品视频线放| 婷婷国产在线综合| 欧美另类高清zo欧美| 亚洲成a天堂v人片| 欧美日本在线一区| 丝袜亚洲另类欧美| 欧美一区二区女人| 蜜臀av一级做a爰片久久| 91精品国产综合久久精品图片 | 亚洲精品国产a| 色呦呦网站一区| 亚洲综合图片区| 欧美三区免费完整视频在线观看| 亚洲一区二区三区不卡国产欧美| 91福利视频网站| 亚洲va韩国va欧美va| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲欧洲av另类| 91丨porny丨蝌蚪视频| 亚洲日本一区二区| 欧美天天综合网| 日本视频中文字幕一区二区三区| 91精品国产欧美一区二区18| 美女高潮久久久| 精品福利在线导航| 国产精品一区二区在线看| 国产精品视频免费| 色综合久久综合中文综合网| 亚洲一区二区三区影院| 91精品国产欧美一区二区| 国内成+人亚洲+欧美+综合在线| 久久精品亚洲一区二区三区浴池| 成人国产精品免费观看动漫| 亚洲欧美日韩国产另类专区| 欧美日韩一区二区欧美激情| 伦理电影国产精品| 欧美激情艳妇裸体舞| 色婷婷国产精品| 蜜臀久久久久久久| 国产精品三级av在线播放| 91精品福利在线| 久久精品国产成人一区二区三区| 国产日韩精品一区二区三区 | 国产午夜亚洲精品午夜鲁丝片| 99久久婷婷国产综合精品电影 | 91理论电影在线观看| 日韩精品亚洲专区| 久久久www免费人成精品| 色综合久久中文字幕综合网| 天天操天天综合网| 欧美国产一区二区| 欧美日韩精品一区二区三区四区| 韩国精品久久久| 一区二区不卡在线视频 午夜欧美不卡在| 欧美精品 日韩| 成人av影院在线| 免费成人av在线| 专区另类欧美日韩| 日韩免费视频一区二区| 972aa.com艺术欧美| 日韩成人一区二区三区在线观看| 中文字幕电影一区| 666欧美在线视频| 99国产精品视频免费观看| 麻豆视频观看网址久久| 亚洲特黄一级片| 精品国产1区2区3区| 精品视频1区2区3区| 国产精品一区二区久久精品爱涩| 一区二区高清在线| 欧美国产日韩亚洲一区| 欧美一区二区三区四区高清| 99国产精品国产精品毛片| 精品在线免费视频| 亚洲午夜电影网| 亚洲欧洲日韩av| 精品国产成人在线影院| 欧美亚洲综合色| 99久久99久久久精品齐齐| 精品一区二区三区免费毛片爱| 亚洲一区二区五区| 中文字幕一区二区三区在线不卡| 精品美女在线观看| 777久久久精品| 欧美日韩中文一区| 91蝌蚪porny| 丰满少妇在线播放bd日韩电影| 久久99精品国产.久久久久久| 一区二区三区不卡视频在线观看 | 国产精品亚洲第一| 免费在线看成人av| 亚洲va国产天堂va久久en| 亚洲乱码国产乱码精品精可以看| 久久精品人人做人人综合 | 中文字幕视频一区二区三区久| 久久综合色综合88| 日韩亚洲电影在线| 欧美精选一区二区| 欧美在线观看一区二区| 色诱亚洲精品久久久久久| 成人av免费网站| 成人av电影在线| 国产成人aaa| 国产成人综合亚洲91猫咪| 狠狠色综合播放一区二区| 久久国产福利国产秒拍| 免费人成黄页网站在线一区二区| 午夜精品久久久久久久99樱桃| 亚洲国产一区二区在线播放| 一区二区三区四区在线播放 |