一個很奇怪的問題:關於struts自定義標籤

springlet發表於2006-06-17
我定義了一個sturts標籤,用於顯示select下拉選單初始化的內容,下面還有兩個文字框和提交按鈕,可是在執行時,頁面上只顯示了select的內容,文字框和提交按鈕都沒有顯示出來,而且select中的內容也顯示得不完全,因為select的內容是從資料庫讀出的,可是頁面上select中的記錄數少於資料庫中的記錄數,這是為什麼?以下是我的自定義標籤:
package tag;

import java.util.Iterator;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.Hibernate.SessionFactory;
import com.jingpin.Courseinfo;
import com.jingpin.Kindinfo;

public class InitListTag extends TagSupport {
private Log log = LogFactory.getLog(this.getClass().getName());
public int doEndTag() throws JspException{
JspWriter out=pageContext.getOut();
try{
out.println("<select size=\"8\" name=\"select1\" id=\"select1\" style=\"width:200\" ondblclick=\"add();\" multiple=\"multiple\">");
Session session=SessionFactory.currentSession();
Transaction tx=session.beginTransaction();
Query query=session.createQuery("from Courseinfo c,Kindinfo k where c.kindType=k.kindType and c.kindSecond=k.kindSecond order by c.kindSecond");
for(Iterator it=query.iterate();it.hasNext();){
Object[] objs=(Object[])it.next();
Courseinfo cinfo=(Courseinfo)objs[0];
Kindinfo kinfo=(Kindinfo)objs[1];
String str1=cinfo.getCourseId().toString();
String str2=cinfo.getCourseName();
String str3=cinfo.getSchoolName();
String str4=cinfo.getCourseDutyName();
String str5=cinfo.getKindFirst();
String str6=kinfo.getKindFirstName();
String str7=cinfo.getKindSecond();
String str8=kinfo.getKindSecondName();
out.println("<option value =\""+str1+"\">"+str2+","+str3+","+str4+","+str5+","+str6+","+str7+","+str8+"</option>");
}
out.println("</select>");
tx.commit();
SessionFactory.closeSession();
}catch(Exception e){
throw new JspTagException("IOException:" + e.toString());
}
return EVAL_PAGE;
}
}
注:我曾經以為是返回值有問題,但是將返回值改為return super.doEndTag();之後還是不對。
急死我了

相關文章