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

📄 getpropertytag.java

📁 jakarta-taglibs
💻 JAVA
字号:
/*
 * Copyright 2004 The Apache Software Foundation.
 * 
 * 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 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 org.apache.taglibs.jsp12;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;

import java.io.IOException;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import javax.servlet.jsp.tagext.TagSupport;

/**
 * Custom tag that allows JSP 1.1 users to emulate the
 * behaviour of the JSP 1.2 version of the jsp:getProperty
 * tag.
 */

public class GetPropertyTag extends TagSupport{
  
  String _name     = null;
  String _property = null;
  
  public void setName(String name) {
    _name = name;
  }
  
  public void setProperty(String property) {
    _property = property;
  }
  
  public int doStartTag() {
    Object o = pageContext.getAttribute(_name);
    
    if (o == null) {
      return EVAL_BODY_INCLUDE;
    }
    
    // perform introspection to access getter method
    Class cls = o.getClass();
    BeanInfo beanInfo;
    try {
      beanInfo = Introspector.getBeanInfo(cls);
    } catch (IntrospectionException e) {
      e.printStackTrace();
      return EVAL_BODY_INCLUDE;
    }
    
    PropertyDescriptor descriptors[] = beanInfo.getPropertyDescriptors();
    Method getterMethod = null;
    for (int i = 0; i < descriptors.length; ++i) {
      if (descriptors[i].getName().equals(_property)) {
        getterMethod = descriptors[i].getReadMethod();
      }
    }
    
    if (getterMethod != null) {    
      try {
        pageContext.getOut().print(getterMethod.invoke(o, new Object[0]));
      } catch (IllegalAccessException e) {
        e.printStackTrace();
      } catch (InvocationTargetException e) {
        e.printStackTrace();
      } catch (IOException e) { 
        e.printStackTrace();
      }
    }
    return EVAL_BODY_INCLUDE;
  }
  
  public void release() {
    _name = null;
    _property = null;
  }
}

⌨️ 快捷键说明

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