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

📄 lookuputil.java

📁 struts+spring+hibernate自创框架
💻 JAVA
字号:
/** * Licensed under the Artistic License; you may not use this file * except in compliance with the License. * You may obtain a copy of the License at * *      http://displaytag.sourceforge.net/license.html * * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */package org.displaytag.util;import java.lang.reflect.InvocationTargetException;import java.util.List;import java.util.Map;import javax.servlet.jsp.PageContext;import org.apache.commons.beanutils.NestedNullException;import org.apache.commons.beanutils.PropertyUtils;import org.apache.commons.lang.StringUtils;import org.apache.commons.lang.Validate;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.displaytag.exception.ObjectLookupException;/** * Utility class with methods for object and properties retrieving. * @author Fabrizio Giustina * @version $Id: LookupUtil.java 1081 2006-04-03 20:26:34Z fgiust $ */public final class LookupUtil{    /**     * logger.     */    private static Log log = LogFactory.getLog(LookupUtil.class);    /**     * don't instantiate a LookupUtil.     */    private LookupUtil()    {        // unused    }    /**     * Read an object from the pagecontext with the specified scope and eventually lookup a property in it.     * @param pageContext PageContext     * @param beanAndPropertyName String expression with bean name and attributes     * @param scope One of the following values:     * <ul>     * <li>PageContext.PAGE_SCOPE</li>     * <li>PageContext.REQUEST_SCOPE</li>     * <li>PageContext.SESSION_SCOPE</li>     * <li>PageContext.APPLICATION_SCOPE</li>     * </ul>     * @return Object     * @throws ObjectLookupException for errors while retrieving a property in the bean     */    public static Object getBeanValue(PageContext pageContext, String beanAndPropertyName, int scope)        throws ObjectLookupException    {        if (beanAndPropertyName.indexOf('.') != -1)        {            // complex: property from a bean            String objectName = StringUtils.substringBefore(beanAndPropertyName, ".");            String beanProperty = StringUtils.substringAfter(beanAndPropertyName, ".");            Object beanObject;            if (log.isDebugEnabled())            {                log.debug("getBeanValue - bean: {" + objectName + "}, property: {" + beanProperty + "}");            }            // get the bean            beanObject = pageContext.getAttribute(objectName, scope);            // if null return            if (beanObject == null)            {                return null;            }            // go get the property            return getBeanProperty(beanObject, beanProperty);        }        // simple, only the javabean        if (log.isDebugEnabled())        {            log.debug("getBeanValue - bean: {" + beanAndPropertyName + "}");        }        return pageContext.getAttribute(beanAndPropertyName, scope);    }    /**     * <p>     * Returns the value of a property in the given bean.     * </p>     * <p>     * Handle <code>NestedNullException</code> returning nulls and other exceptions returning     * <code>ObjectLookupException</code>.     * </p>     * @param bean javabean     * @param name name of the property to read from the javabean     * @return Object     * @throws ObjectLookupException for errors while retrieving a property in the bean     */    public static Object getBeanProperty(Object bean, String name) throws ObjectLookupException    {        Validate.notNull(bean, "No bean specified");        Validate.notNull(name, "No name specified");        if (log.isDebugEnabled())        {            log.debug("getProperty [" + name + "] on bean " + bean);        }        try        {            return getProperty(bean, name);        }        catch (IllegalAccessException e)        {            throw new ObjectLookupException(LookupUtil.class, bean, name, e);        }        catch (InvocationTargetException e)        {            throw new ObjectLookupException(LookupUtil.class, bean, name, e);        }        catch (NoSuchMethodException e)        {            throw new ObjectLookupException(LookupUtil.class, bean, name, e);        }        catch (NestedNullException nne)        {            // don't throw exceptions for nulls            return null;        }        catch (IllegalArgumentException e)        {            // don't throw exceptions for nulls; the bean and name have already been checked; this is being thrown when            // the bean property value is itself null.            log                .debug(                    "Caught IllegalArgumentException from beanutils while looking up " + name + " in bean " + bean,                    e);            return null;        }    }    /**     * Return the value of the (possibly nested) property of the specified name, for the specified bean, with no type     * conversions.     * @param bean Bean whose property is to be extracted     * @param name Possibly nested name of the property to be extracted     * @return Object     * @throws NoSuchMethodException     * @throws InvocationTargetException     * @throws IllegalAccessException     * @throws BeanPropertyLookupException in caso di errori nella lettura di propriet

⌨️ 快捷键说明

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