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

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

?? rendertaglib.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. *//** * An tag library that contains tags to help rendering of views and layouts * * @author Graeme Rocher * @since 17-Jan-2006 */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;class RenderTagLib implements com.opensymphony.module.sitemesh.RequestConstants {    protected getPage() {    	return request[PAGE]    }        /**     * Used to retrieve a property of the decorated page     *     * <g:pageProperty default="defaultValue" name="body.onload" />     */        def pageProperty = { attrs ->            if(!attrs.name) {	            throwTagError("Tag [pageProperty] is missing required attribute [name]")            }                            def htmlPage = getPage()            String propertyValue = htmlPage.getProperty(attrs.name)            if (!propertyValue)                propertyValue = attrs.'default';            if (propertyValue) {                if (attrs.writeEntireProperty) {                    out << ' '                    out << propertyName.substring(propertyName.lastIndexOf('.') + 1)                    out << "=\"${propertyValue}\""                }                else {                    out << propertyValue                }            }        }		/**	 * Invokes the body of this tag if the page property exists:	 * 	 * <g:ifPageProperty name="meta.index">body to invoke</g:ifPageProperty>	 *	 * of it equals a certain value:	 *	 *<g:ifPageProperty name="meta.index" equals="blah">body to invoke</g:ifPageProperty>	 */ 	def ifPageProperty = { attrs, body ->		if(attrs.name) {			def htmlPage = getPage()			def names = ((attrs.name instanceof List) ? attrs.name : [attrs.name])									def invokeBody = true			for(i in 0..<names.size()) {				String propertyValue = htmlPage.getProperty(names[i])				if(propertyValue) {					if(attrs.equals instanceof List) {						invokeBody = (attrs.equals[i]==propertyValue)					}					else if(attrs.equals instanceof String) {						invokeBody = (attrs.equals == propertyValue)						}				}				else {					invokeBody = false					break					}			}			if(invokeBody) {				body();				}		}	}    /**     * Used in layouts to render the page title from the SiteMesh page     *     * <g:layoutTitle default="The Default title" />     */	def layoutTitle = { attrs ->        String title = page.title        if (!title && attrs.'default') title = attrs.'default'        if (title) out << title;			}	    /**     * Used in layouts to render the body of a SiteMesh layout     *     * <g:layoutBody />     */		def layoutBody = { attrs ->		getPage().writeBody(out)	}	    /**     * Used in layouts to render the head of a SiteMesh layout     *     * <g:layoutHead />     */			def layoutHead = { attrs ->		getPage().writeHead(out)		}			/**	 * Creates next/previous links to support pagination for the current controller	 *	 * <g:paginate total="${Account.count()}" />	 */	def paginate = { attrs ->        if(attrs.total == null)            throwTagError("Tag [paginate] is missing required attribute [total]")				def mkp = new groovy.xml.MarkupBuilder(out)		def total = attrs.total.toInteger()		def max = params.max?.toInteger()		def offset = params.offset?.toInteger() 		def action = (attrs.action? attrs.action : 'list')		def breadcrumb = true		if(attrs.breadcrumb) breadcrumb = Boolean.valueOf(attrs.breadcrumb)					if(!max) max = (attrs.max ? attrs.max.toInteger() : 10)		if(!offset) offset = (attrs.offset ? attrs.offset.toInteger() : 0)				def linkParams = [offset:offset-max,max:max]		def linkTagAttrs = ['class':'prevLink',action:action]		if(attrs.controller) {			linkTagAttrs.controller = attrs.controller			}		if(attrs.id) {			linkTagAttrs.id = attrs.id			}		if(attrs.params)linkParams.putAll(attrs.params)		linkTagAttrs.params = linkParams			def combined = max + offset		if(offset > 0) {						link(linkTagAttrs.clone(),{out<< (attrs.prev? attrs.prev : 'Previous' ) })		}				if(total > max) {			linkTagAttrs.'class' = 'step'			if(breadcrumb) {				def j = 0				0.step(total,max) { i ->					if(offset == i) {						mkp.a('class':'step',"${++j}")						}					else {						linkParams.offset=i						link(linkTagAttrs.clone(),{out<<++j})						}				}						}					}		linkParams.offset = offset+max		if(combined < total) {				linkTagAttrs.'class'='nextLink'						link(linkTagAttrs,{out<< (attrs.'next'? attrs.'next' : 'Next' )})					}	}    /**     *  allows rendering of templates inside views for collections, models and beans. Examples:     *     *  <g:render template="atemplate" collection="${users}" />     *  <g:render template="atemplate" model="[user:user,company:company]" />     *  <g:render template="atemplate" bean="${user}" />     */    def render = { attrs, body ->        if(!attrs.template)            throwTagError("Tag [render] is missing required attribute [template]")        def engine = grailsAttributes.getPagesTemplateEngine()        def uri = grailsAttributes.getTemplateUri(attrs.template,request)        def var = attrs['var']        def url = servletContext.getResource(uri)        if(!url)            throwTagError("No template found for name [${attrs.template}] in tag [render]")        def t = engine.createTemplate(  uri,                                        servletContext,                                        request,                                        response)        if(attrs.model instanceof Map) {            t.make( attrs.model ).writeTo(out)        }        else if(attrs.collection) {            attrs.collection.each {            	if(var) {            		def b = [:]            		b.put(var, it)            		t.make(b).writeTo(out)            	}            	else {	                t.make( ['it': it] ).writeTo(out)	            }            }        }        else if(attrs.bean) {        	if(var) {        		def b = [:]        		b.put(var, attrs.bean)        		t.make(b).writeTo(out)        	}        	else {        	            t.make( [ 'it' : attrs.bean ] ).writeTo(out)	        }        }		else if(attrs.template && attrs.size() == 1) {			t.make().writeTo(out)					}    }	/**	 * Used to include templates	 */	def include = { attrs ->		if(attrs.template) {	        def engine = grailsAttributes.getPagesTemplateEngine()	        def uri = grailsAttributes.getTemplateUri(attrs.template,request)	        def url = servletContext.getResource(uri)	        if(!url)	            throwTagError("No template found for name [${attrs.template}] in tag [include]")	        def t = engine.createTemplate(  uri,	                                        servletContext,	                                        request,	                                        response)						t.make().writeTo(out)		}	}	}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷综合久久久中文一区二区| 欧美做爰猛烈大尺度电影无法无天| 中文字幕不卡一区| 欧美三级电影在线看| 国产精品99久久久久久宅男| 亚洲国产视频一区| 一区二区三区日韩欧美精品| 91精品国产高清一区二区三区| www.99精品| 国产高清精品网站| 免费观看91视频大全| 亚洲色图欧美偷拍| 久久久www成人免费毛片麻豆| 欧美三级电影网| 91麻豆福利精品推荐| 国产不卡视频在线播放| 免费人成在线不卡| 婷婷开心激情综合| 一区二区欧美在线观看| 椎名由奈av一区二区三区| 久久久青草青青国产亚洲免观| 欧美日韩精品专区| 色播五月激情综合网| 成人高清视频在线| 成人性视频网站| 国产一区二区三区最好精华液| 日本中文一区二区三区| 五月天激情综合| 一区二区在线电影| 亚洲人成小说网站色在线 | 国产美女久久久久| 美女一区二区在线观看| 青青草97国产精品免费观看 | 亚洲制服欧美中文字幕中文字幕| 国产精品乱子久久久久| 国产精品美女www爽爽爽| 久久噜噜亚洲综合| 久久精品夜色噜噜亚洲aⅴ| 久久蜜臀精品av| 久久久国产精品午夜一区ai换脸| 精品99999| 久久先锋资源网| 国产喷白浆一区二区三区| 国产欧美一区二区三区网站| 国产亚洲视频系列| 国产精品久久久久影院亚瑟 | 一区二区在线观看视频| 一区二区三区欧美亚洲| 一区av在线播放| 亚洲一区视频在线观看视频| 亚洲中国最大av网站| 三级影片在线观看欧美日韩一区二区| 亚洲成人免费av| 日韩精品一区第一页| 久久精品国产精品亚洲综合| 91在线播放网址| 色综合久久久久久久久久久| 欧美无砖专区一中文字| 7777精品久久久大香线蕉| 欧美成人免费网站| 中文字幕成人在线观看| 亚洲精品五月天| 视频在线观看91| 国产自产v一区二区三区c| 国产激情91久久精品导航 | 91久久香蕉国产日韩欧美9色| 精品视频一区二区不卡| 日韩女优av电影| 欧美国产在线观看| 亚洲黄色免费网站| 免费一级片91| 粉嫩绯色av一区二区在线观看| 91免费看片在线观看| 这里只有精品免费| 久久久久久久久久久久久女国产乱| 国产欧美日韩亚州综合| 亚洲精品免费在线观看| 日本人妖一区二区| zzijzzij亚洲日本少妇熟睡| 欧美精品少妇一区二区三区| 久久影院电视剧免费观看| 亚洲日本丝袜连裤袜办公室| 三级影片在线观看欧美日韩一区二区| 狠狠色丁香久久婷婷综| 成人a区在线观看| 欧美精品乱人伦久久久久久| 国产女同互慰高潮91漫画| 亚洲国产成人av网| 国产ts人妖一区二区| 欧美日韩国产在线播放网站| 国产网红主播福利一区二区| 亚洲国产精品一区二区久久恐怖片| 精品写真视频在线观看| 在线免费精品视频| 欧美精品一区二区三区蜜桃视频| 亚洲欧美日韩成人高清在线一区| 久久99国产精品免费网站| 日本精品视频一区二区三区| 2欧美一区二区三区在线观看视频| 亚洲男人电影天堂| 国产成人av电影免费在线观看| 欧美精品三级在线观看| 亚洲欧美日韩一区二区三区在线观看| 精品无码三级在线观看视频| 欧美性感一区二区三区| 国产精品久久久久影院老司| 激情六月婷婷久久| 91精品麻豆日日躁夜夜躁| 亚洲免费视频中文字幕| 丁香婷婷综合色啪| 精品国产伦一区二区三区观看体验| 夜夜嗨av一区二区三区网页 | 一区二区三区欧美亚洲| 成人少妇影院yyyy| 久久精品视频一区二区三区| 日韩vs国产vs欧美| 欧美午夜一区二区| 亚洲精选在线视频| 91麻豆免费视频| 国产精品网站在线播放| 国产精品456| 精品国产免费视频| 久久激情综合网| 欧美一级日韩一级| 全部av―极品视觉盛宴亚洲| 欧美在线色视频| 亚洲综合男人的天堂| 91久久精品国产91性色tv| 亚洲日本一区二区| 91久久香蕉国产日韩欧美9色| 国产精品美女久久久久aⅴ国产馆| 国产高清亚洲一区| 久久久亚洲欧洲日产国码αv| 精品一区二区免费视频| 精品国产乱码久久久久久闺蜜| 日韩黄色免费电影| 7777精品久久久大香线蕉| 天堂蜜桃一区二区三区| 欧美精品高清视频| 美女尤物国产一区| 精品日韩av一区二区| 久久国产精品无码网站| 精品av综合导航| 国产成人免费网站| 国产精品久久久久久久久久免费看| 波多野洁衣一区| 一区二区三区中文免费| 欧美日韩精品电影| 日本麻豆一区二区三区视频| 欧美一区二区三区免费在线看| 久久激五月天综合精品| 久久久久99精品国产片| 不卡av电影在线播放| 亚洲卡通欧美制服中文| 欧美日韩一区精品| 另类小说一区二区三区| 欧美激情一区二区在线| 色综合天天综合| 亚洲成人1区2区| 精品国产在天天线2019| 东方欧美亚洲色图在线| 樱花影视一区二区| 欧美一级二级三级蜜桃| 高清不卡一区二区在线| 一区二区三区视频在线看| 欧美一区二区三区不卡| 国产成人在线网站| 一区二区三区四区亚洲| 6080日韩午夜伦伦午夜伦| 国产黄色精品网站| 亚洲一二三四在线| 337p粉嫩大胆色噜噜噜噜亚洲| av在线一区二区三区| 日韩国产在线观看一区| 国产欧美精品一区二区色综合朱莉| 色狠狠av一区二区三区| 精品一区二区综合| 亚洲人成精品久久久久久| 欧美一级电影网站| 91色porny在线视频| 蜜臀久久久99精品久久久久久| 国产精品欧美综合在线| 欧美精品日韩综合在线| 成人蜜臀av电影| 免费高清成人在线| 中文字幕一区二区三区在线播放| 欧美在线免费播放| 国产精品77777竹菊影视小说| 亚洲第四色夜色| 中文子幕无线码一区tr| 欧美精品久久一区二区三区| 成+人+亚洲+综合天堂| 免费观看在线色综合| 亚洲人成7777| 久久精品无码一区二区三区| 欧美精品欧美精品系列| 91蝌蚪国产九色| 国产福利一区二区三区视频在线 | 成人国产亚洲欧美成人综合网| 亚洲风情在线资源站|