当前位置:  技术问答>java相关

标签库的问题

    来源: 互联网  发布时间:2015-11-06

    本文导语:  标签定义: listall  com.softvan.tld.list.ListAllBodyTag  com.softvan.tld.list.ListAllBodyTagExtraInfo JSP    items true true 标签的java文件: //ListAllBodyTag.java public class ListAllBodyTag extends BodyTagSupport  {  private int index=0;  private StringB...

标签定义:

listall 
com.softvan.tld.list.ListAllBodyTag 
com.softvan.tld.list.ListAllBodyTagExtraInfo
JSP 

 
items
true
true


标签的java文件:
//ListAllBodyTag.java
public class ListAllBodyTag extends BodyTagSupport 

private int index=0; 
private StringBuffer buffer = new StringBuffer(); 
public ListAllBodyTag() { }
public int doStartTag()throws JspTagException 

System.out.println("index="+index);
setLoopVariables(); 
return super.EVAL_BODY_TAG;

public int doEndTag() throws JspTagException 

try 

pageContext.getOut().write(buffer.toString()); 

catch (IOException ex) 

throw new JspTagException("can't write."); 
}
return super.EVAL_PAGE; 
}
public int doAfterBody() throws JspTagException 

BodyContent bodyContent = getBodyContent(); 
if (bodyContent != null) 

buffer.append(bodyContent.getString()); 
try 

bodyContent.clear(); 
}
catch (IOException ex) 
{
throw new JspTagException("can't clear."); 

}
if( items.size() > ++index ) 

setLoopVariables(); 
return super.EVAL_BODY_TAG; 
}
return super.SKIP_BODY; 
}
private void setLoopVariables() 

pageContext.setAttribute("name",((Hashtable)items.get(index)).get("name")); 
pageContext.setAttribute("value",((Hashtable)items.get(index)).get("value")); 
}
private java.util.Vector items; 
public java.util.Vector getItems() { return items; } 
public void setItems(java.util.Vector items) { this.items = items; } 

//ListAllBodyTagExtraInfo.java
public class ListAllBodyTagExtraInfo extends TagExtraInfo 

public ListAllBodyTagExtraInfo() { } 

public VariableInfo[] getVariableInfo(TagData data) 

return new VariableInfo[] 

new VariableInfo("name", "java.lang.String", true, VariableInfo.NESTED) , 
new VariableInfo("value", "java.lang.Integer", true, VariableInfo.NESTED), 
}; 
}
}
使用标签的jsp文件:
 
 
  •  is  

    但是,运行的时候说array out of 0的错误,请问,该标签以及它的java文件是怎么工作的?谢谢

  • |
    先说明错误的原因


    在doStartTag中调用了setLoopVariables,而jsp中传进去的all的size()=0,在setLoopVariables里面items.get(index)就会出错(此时index=0)。

    因此doStartTag有逻辑错误,对于传进去一个空vector的情况就会出错,应该改成:

    public int doStartTag() throws JspTagException {
      System.out.println("index="+index);
      if (items==null || items.size()==0) { //判断items为空或者没有元素
        return super.SKIP_BODY;
      } else {
        setLoopVariables();
        return super.EVAL_BODY_TAG;
      }
    }


        
     
     
     
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Web前端设计:html上标<sup>标签与下标<sub>标签详解
  • 在写自定义标签时,如何得到引用当前标签的jsp文件名呢?
  • html<pre>标签自动换行实现方法
  • 批量修改标签css样式以input标签为例
  • Web前端设计:Html强制不换行<nobr>标签用法代码示例
  • jquery隐藏标签、显示标签的例子
  • HTML5 <audio> 标签-在html中定义声音的标签
  • C#实现过滤html标签并保留a标签的方法
  • PHP去除html标签,php标记及css样式代码参考
  • 标签扩展和标签库是作什么用的,能给我简单介绍一下吗?
  • ThinkPHP模板范围判断输出In标签与Range标签用法详解 iis7站长之家
  • jquery删除指定的html标签并保留标签内文本内容的方法
  • html form标签用法(js操作form)介绍及代码示例
  • 使用JSP扩展标签,可否从标签内得到一个输出参数?
  • HTML中的<select>标签如何设置默认选中的选项
  • 删除html标签得到纯文本可处理嵌套的标签
  • HTML 5 <br> 标签-插入简单的换行符
  • ThinkPHP模板范围判断输出In标签与Range标签用法详解
  • Html checkbox标签如何设置默认选中以及用js操作checkbox代码示例
  • thinkphp自定义标签与view直接标签实例教程
  • HTML 5 <base> 标签-规定页面中所有链接的基准 url
  • ThinkPHP标签怎么制作?thinkphp标签制作实例教程


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3