This Domain(Admin5.com) is for Sale:

Taglib 原理和实现之嵌套和属性读取

时间:2007-10-22  来源:不详  作者:林子

*/
public class WithTag extends BodyTagSupport
{
 private Object value = null;
 private Object output = null;

 public void setOutput(Object output)
 {
  this.output = output;
 }
 public Object getValue()
 {
  return value;
 }
 public void setValue(Object value)throws JspException
 {
  this.value = ExpressionEvaluatorManager.evaluate("value", value.toString(), Object.class, this, pageContext);
 }
 public int doStartTag()
 {
  return EVAL_BODY_INCLUDE;
 }
 public int doEndTag()throws JspException
 {
  try
  {
   pageContext.getOut().print(output);
  }
  catch (IOException e)
  {
   throw new JspException(e);
  }
  return EVAL_PAGE;
 }
}
  编写 NestedOutputTag 如下:

package diegoyun;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;

import org.apache.commons.beanutils.PropertyUtils;
织梦好,好织梦
/**
* @author chenys
*/
public class NestedOutputTag extends BodyTagSupport
{
 private String property = null;

 public void setProperty(String property)
 {
  this.property = property;
 }

 public int doEndTag()throws JspException
 {
  WithTag parent =(WithTag)getParent();
  if(parent==null)
   throw new JspException("Can not find parent Tag ");
   try
   {
    Object propertyValue = PropertyUtils.getProperty(parent.getValue(), property);
    parent.setOutput(propertyValue);
   }
   catch (Exception e)
   {
    throw new JspException(e);
   }
   return EVAL_PAGE;
  }
}
  在包diegoyun下添加一个包vo,在vo下写一个Man类:

package diegoyun.vo;

/**
* @author chenys
*/
public class Man
{
 private String name = null;
 private int age = 0;

 public int getAge()
 {
  return age;
 }
 public void setAge(int age)

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息