我自己写了一个标签,功能和<foreach>标签一样,就是循环打印一个数组,
比如我有一个数组
List list = new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("adda");
list.add("aeea");
session.setAttribute("list",list);
然后我把这个数组放到session里面,然后在写了个实现BodyTag接口的类用来实现循环打印的功能
现在我的问题是,我在页面上调用一次<foreach var="str" item="list">可以打印出我想要的结果,
但是我写两遍的话就报错<foreach var="str" item="list">
</foreach>
<foreach var="str" item="list">
</foreach>
比如我有一个数组
List list = new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("adda");
list.add("aeea");
session.setAttribute("list",list);
然后我把这个数组放到session里面,然后在写了个实现BodyTag接口的类用来实现循环打印的功能
现在我的问题是,我在页面上调用一次<foreach var="str" item="list">可以打印出我想要的结果,
但是我写两遍的话就报错<foreach var="str" item="list">
</foreach>
<foreach var="str" item="list">
</foreach>
解决方案 »
- 关于tomcat服务器相关问题
- jsp问题请教啊啊啊啊啊
- 求精通Spring2.x-企业应用开发详解 电子书
- 急急急急急急急!!!!哪位大哥帮帮小弟啊,先谢了.
- 关于log4j的问题!~~~~~~~~~~~~~~~~~~~~~~
- 帖子沉了~再开一篇~Apache2和Tomcat5整合的问题~望有正解!!!
- Eclipse 如何将lomboz插件挂上?可不可以请大家教我一下,谢谢!
- 你离开了一个公司你还会回去吗?!公司也同意要你!!〉?
- 菜鸟问题:如何使用jaxp?
- 关于在JSP中submit的问题,急急急急急急急急!!!!!!!!!!!!!!!!!
- Velocity填写mht文件导出word
- 在北京的工作经验2年 JAVA 和 前台 要税后4000 工作最近好找吗
import java.io.PrintWriter;
import java.util.*;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTag;
import javax.servlet.jsp.tagext.Tag;public class ForEach implements BodyTag { private PageContext pc ;
private Tag partag;
private BodyContent bodycontent;
private String item;
private String var;
private List list = null;
JspWriter out = null;
public ForEach(){
System.out.println("调用构造方法");
}
public String getItem() {
return item;
} public void setItem(String item) {
System.out.println("设置item对象");
this.item = item;
} public String getVar() {
return var;
} public void setVar(String var) {
System.out.print("设置var对象");
this.var = var;
} public void doInitBody() throws JspException {
System.out.println("初始化标签体"); } @Override
public void setBodyContent(BodyContent body) {
this.bodycontent = body;
System.out.println("设置标签上下文"); } @Override
public int doAfterBody() throws JspException {
System.out.println("doafterbody方法"+list.size());
if(list.size()<=0){
return SKIP_BODY;
}
this.pc.getRequest().setAttribute(this.getVar(), list.get(0));
list.remove(0);
return EVAL_BODY_AGAIN;
} @Override
public int doEndTag() {
System.out.println("结束标签");
//pc.getRequest().removeAttribute(this.getVar());
return 0;
} @Override
public int doStartTag() throws JspException {
System.out.println("开始标签");
list = (List<String>)pc.getSession().getAttribute(this.getItem());
if(list == null ){
return SKIP_BODY;
}
System.out.println(list.size()+", arg1");
this.pc.getRequest().setAttribute(this.getVar(), list.get(0));
list.remove(0);
return EVAL_BODY_INCLUDE;
} @Override
public Tag getParent() {
System.out.println("得到父类标签");
return null;
} @Override
public void release() {
System.out.println("释放标签"); } @Override
public void setPageContext(PageContext pc) {
System.out.println("设置pageContext对象");
this.pc = pc;
} @Override
public void setParent(Tag tag) {
this.partag = tag; }}