⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scopedattributeelresolver.java

📁 梅花雪树的经典制作
💻 JAVA
字号:
/** Licensed to the Apache Software Foundation (ASF) under one or more* contributor license agreements.  See the NOTICE file distributed with* this work for additional information regarding copyright ownership.* The ASF licenses this file to You 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 WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/package javax.servlet.jsp.el;import java.beans.FeatureDescriptor;import java.util.ArrayList;import java.util.Collection;import java.util.Enumeration;import java.util.Iterator;import java.util.List;import javax.el.ELContext;import javax.el.ELException;import javax.el.ELResolver;import javax.el.PropertyNotFoundException;import javax.el.PropertyNotWritableException;import javax.servlet.jsp.JspContext;import javax.servlet.jsp.PageContext;public class ScopedAttributeELResolver extends ELResolver {	public ScopedAttributeELResolver() {		super();	}	public Object getValue(ELContext context, Object base, Object property)			throws NullPointerException, PropertyNotFoundException, ELException {		if (context == null) {			throw new NullPointerException();		}		if (base == null) {			context.setPropertyResolved(true);			if (property != null) {				String key = property.toString();				PageContext page = (PageContext) context						.getContext(JspContext.class);				return page.findAttribute(key);			}		}		return null;	}	public Class<Object> getType(ELContext context, Object base, Object property)			throws NullPointerException, PropertyNotFoundException, ELException {		if (context == null) {			throw new NullPointerException();		}		if (base == null) {			context.setPropertyResolved(true);			return Object.class;		}		return null;	}	public void setValue(ELContext context, Object base, Object property,			Object value) throws NullPointerException,			PropertyNotFoundException, PropertyNotWritableException,			ELException {		if (context == null) {			throw new NullPointerException();		}		if (base == null) {			context.setPropertyResolved(true);			if (property != null) {				String key = property.toString();				PageContext page = (PageContext) context						.getContext(JspContext.class);				int scope = page.getAttributesScope(key);				if (scope != 0) {					page.setAttribute(key, value, scope);				} else {					page.setAttribute(key, value);				}			}		}	}	public boolean isReadOnly(ELContext context, Object base, Object property)			throws NullPointerException, PropertyNotFoundException, ELException {		if (context == null) {			throw new NullPointerException();		}		if (base == null) {			context.setPropertyResolved(true);		}		return false;	}	public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {		PageContext ctxt = (PageContext) context.getContext(JspContext.class);		List<FeatureDescriptor> list = new ArrayList<FeatureDescriptor>();		Enumeration e;		Object value;		String name;		e = ctxt.getAttributeNamesInScope(PageContext.PAGE_SCOPE);		while (e.hasMoreElements()) {			name = (String) e.nextElement();			value = ctxt.getAttribute(name, PageContext.PAGE_SCOPE);			FeatureDescriptor descriptor = new FeatureDescriptor();			descriptor.setName(name);			descriptor.setDisplayName(name);			descriptor.setExpert(false);			descriptor.setHidden(false);			descriptor.setPreferred(true);			descriptor.setShortDescription("page scoped attribute");			descriptor.setValue("type", value.getClass());			descriptor.setValue("resolvableAtDesignTime", Boolean.FALSE);			list.add(descriptor);		}		e = ctxt.getAttributeNamesInScope(PageContext.REQUEST_SCOPE);		while (e.hasMoreElements()) {			name = (String) e.nextElement();			value = ctxt.getAttribute(name, PageContext.REQUEST_SCOPE);			FeatureDescriptor descriptor = new FeatureDescriptor();			descriptor.setName(name);			descriptor.setDisplayName(name);			descriptor.setExpert(false);			descriptor.setHidden(false);			descriptor.setPreferred(true);			descriptor.setShortDescription("request scope attribute");			descriptor.setValue("type", value.getClass());			descriptor.setValue("resolvableAtDesignTime", Boolean.FALSE);			list.add(descriptor);		}		if (ctxt.getSession() != null) {			e = ctxt.getAttributeNamesInScope(PageContext.SESSION_SCOPE);			while (e.hasMoreElements()) {				name = (String) e.nextElement();				value = ctxt.getAttribute(name, PageContext.SESSION_SCOPE);				FeatureDescriptor descriptor = new FeatureDescriptor();				descriptor.setName(name);				descriptor.setDisplayName(name);				descriptor.setExpert(false);				descriptor.setHidden(false);				descriptor.setPreferred(true);				descriptor.setShortDescription("session scoped attribute");				descriptor.setValue("type", value.getClass());				descriptor.setValue("resolvableAtDesignTime", Boolean.FALSE);				list.add(descriptor);			}		}		e = ctxt.getAttributeNamesInScope(PageContext.APPLICATION_SCOPE);		while (e.hasMoreElements()) {			name = (String) e.nextElement();			value = ctxt.getAttribute(name, PageContext.APPLICATION_SCOPE);			FeatureDescriptor descriptor = new FeatureDescriptor();			descriptor.setName(name);			descriptor.setDisplayName(name);			descriptor.setExpert(false);			descriptor.setHidden(false);			descriptor.setPreferred(true);			descriptor.setShortDescription("application scoped attribute");			descriptor.setValue("type", value.getClass());			descriptor.setValue("resolvableAtDesignTime", Boolean.FALSE);			list.add(descriptor);		}		return list.iterator();	}	private static void appendEnumeration(Collection c, Enumeration e) {		while (e.hasMoreElements()) {			c.add(e.nextElement());		}	}	public Class<String> getCommonPropertyType(ELContext context, Object base) {		if (base == null) {			return String.class;		}		return null;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -