现在做一个栏目管理,分一级栏目和二级栏目,在栏目列表中要将一二级栏目显示出来,我用自定义标签实现,代码如下:
  package com.court.web.tag;import java.io.Writer;
import java.util.List;import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;import org.springframework.web.context.support.WebApplicationContextUtils;import com.court.business.BusinessInterface;
import com.court.businessImpl.BusinessInterfaceImpl;
import com.court.model.Column;@SuppressWarnings("serial")
public class ColumnDisplayTag extends TagSupport { private BusinessInterface bi; public BusinessInterface getBi() {
if (bi == null)
bi = (BusinessInterfaceImpl) WebApplicationContextUtils
.getRequiredWebApplicationContext(
this.pageContext.getServletContext()).getBean(
"businessinterface"); return bi;
} @SuppressWarnings("unchecked")
public int doEndTag() throws JspException { try {
Writer out = pageContext.getOut();
List<Column> ones = getBi().findAllParentColumn(); if (ones != null && ones.size() > 0) {
for (Column c : ones) {
List<Column> twos = null;
out.append("<tr class='mainFaceList1'>");
out
.append("<td><input title='全选' type='checkbox' name='id2'></td>");
out.append("<td>" + c.getName() + "</td>");
out.append("<td>" + "一级栏目" + "</td>");
out.append("<td>" + "" + "</td>");
out
.append("<td class='mainFaceList2Option'><img class='imgButton' src='../images/icoEidt.gif' alt='编辑' width='12' height='12'");
out
.append(" onclick=\"javascript:window.location.href='columnQuery.do?id="
+ c.getId() + "'\"></td></tr>");
twos = getBi().findColunmByParentId(c.getId());
if (twos != null && twos.size() > 0) {
for (Column column : twos) {
out.append("<tr class='mainFaceList1'>");
out
.append("<td class='mainFaceList2'><input title='全选' type='checkbox' name='id2'></td>");
out.append("<td class='mainFaceList2'>"
+ column.getName() + "</td>");
out.append("<td class='mainFaceList2'>" + "二级栏目"
+ "</td>");
out.append("<td class='mainFaceList2'>" + ""
+ "</td>");
out
.append("<td class='mainFaceList2Option'><img class='imgButton' src='../images/icoEidt.gif' alt='编辑' width='12' height='12'");
out
.append(" onclick=\"javascript:window.location.href='columnQuery.do?id="
+ column.getId() + "'\"></td></tr>");
}
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
} return super.doEndTag();
}}
业务逻辑类方法如下: @SuppressWarnings("unchecked")
public List<Column> findColunmByParentId(final long id) {
return getTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) {
String QL = "FROM Column u WHERE u.parentcolumn=:id";
Query q = session.createQuery(QL);
q.setLong("id", id);
return q.list();
}
});


}
现在出现的问题是当一级栏目的数量超过10时,循环到最后一个时页面就卡住,经过调试发现是在执行findColunmByParentId()时停住了,不知道是什么原因呢