目的是通过在JSP中调用ListUser.java中的list方法实现下拉列表的值,是动态的从数据库中读出来的!ListUser.java文件:
package ems.service;import org.hibernate.Session;
import org.hibernate.Transaction;
import ems.hibernate.HibernateUtil;
import org.hibernate.Query;
import java.util.List;
import ems.hibernate.Usertable;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspWriter;
import org.hibernate.HibernateException;public class ListUser {       public void list(HttpServletRequest request, JspWriter out)
       throws Exception
        {
            HibernateUtil hibera=new HibernateUtil();
            Session session=hibera.currentSession();
            Transaction tx=session.beginTransaction();            String sql="from Usertable    ";
               Query query = session.createQuery(sql);
        List list=query.list();        for(Iterator it=list.iterator();it.hasNext();){
            Usertable user=(Usertable)it.next();           out.print("<html:option value='"+user.getName()+"'>"+user.getName()+"</html:option>");       }       tx.commit();
       hibera.currentSession();
    }
}在JSP页面上!
   <html:select property="uname">
         <%
         ListUser listuser=new ListUser();
         listuser.list(request,out);      
         %>
          </html:select>
在listuser.list(request,out)处总提示unreported exception java.lang.Exception; must be caught or declared to be thrown不知道怎么解决,等待高手指点!!!

解决方案 »

  1.   

    <%
             ListUser listuser=new ListUser();
             try {
             listuser.list(request,out);      
             } catch (Exception e) {
             %>
    出错啦!!!
    <%
             }
             %>
      

  2.   

    还有一个办法就是:
           public void list(HttpServletRequest request, JspWriter out)
           throws RuntimeException
            {
          try {
                  ......
               } catch (Exception e) {
                  throw new RuntimeException(e);
               }
           }
      

  3.   

    感谢jamesfancy(边城狂人) 兄弟,异常问题确实没有了!
    我不知道 throws Exception和throws RuntimeException有什么区别,因为下拉列表的值始终为空,读不出数据!郁闷着呢!
      

  4.   

    因为出了异常,你的那段代码肯定没有执行完整,所以会丢失一些东西。比如没取到你要的列表。具体是为什么就要看你的异常输出的信息了。Exception是编译器要检查的,一个方法如果抛出了Exception或者其子类(除RuntimeException外),编译器就要检查调用这个方法的地方是否有处理异常的try ... catch.. 语句,而且这里的catch一定要抓得住抛出来的这个异常;或者看调用者是否也将这个异常继续往外抛了。但是如果是RuntimeException,编译器就不检查,只等运行的时候抛出来了。如果你是用的第一种办法,那么在输出“出错了”之前,你可以用e.printStackTrace()把异常的堆栈打印出来(服务器控制台显示)。
    如果你用的第二种方法,异常直接就会在控制台打印出来。看看打印出来的东西,分析一下到底是什么原因抛出来的异常,再想办法解决它。