我用struts+hibernate+weblogic作项目开发,在queryAction总是出现weblogic报错,如下:<2006-4-16 下午03时19分10秒 CST> <Error> <HTTP> <BEA-101020> <[ServletContext(id=11548716,name=bookonline,context-path=/bookonline)] Se
rvlet failed with Exception
java.util.NoSuchElementException
        at java.util.AbstractList$Itr.next()Ljava/lang/Object;(AbstractList.java:426)
        at jsp_servlet.__initial._jspService(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(__initia
l.java:503)
        at weblogic.servlet.jsp.JspBase.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(JspBase.java:33)
        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run()Ljava/lang/Object;(ServletStubImpl.java:1072)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Lweblog
ic/servlet/internal/FilterChainImpl;)V(ServletStubImpl.java:465)
        at weblogic.servlet.internal.TailFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/Fi
lterChain;)V(TailFilter.java:28)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(FilterCha
inImpl.java:27)
        at com.dong.bookstore.struts.EncodingFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servle
t/FilterChain;)V(EncodingFilter.java:93)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(FilterCha
inImpl.java:27)
        at weblogic.servlet.internal.RequestDispatcherImpl.forward(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(Requ
estDispatcherImpl.java:326)
        at org.apache.struts.action.RequestProcessor.doForward(Ljava/lang/String;Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/
http/HttpServletResponse;)V(RequestProcessor.java:1063)
        at org.apache.struts.action.RequestProcessor.processForwardConfig(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/Ht
tpServletResponse;Lorg/apache/struts/config/ForwardConfig;)V(RequestProcessor.java:386)
        at org.apache.struts.action.RequestProcessor.process(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResp
onse;)V(RequestProcessor.java:229)
        at org.apache.struts.action.ActionServlet.process(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletRespons
e;)V(ActionServlet.java:1194)
        at org.apache.struts.action.ActionServlet.doPost(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse
;)V(ActionServlet.java:432)
        at javax.servlet.http.HttpServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(Htt
pServlet.java:760)
        at javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(HttpServlet.java:853)        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run()Ljava/lang/Object;(ServletStubImpl.java:1072)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Lweblog
ic/servlet/internal/FilterChainImpl;)V(ServletStubImpl.java:465)
        at weblogic.servlet.internal.TailFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/Fi
lterChain;)V(TailFilter.java:28)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(FilterCha
inImpl.java:27)
        at com.dong.bookstore.struts.EncodingFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servle
t/FilterChain;)V(EncodingFilter.java:93)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(FilterCha
inImpl.java:27)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run()Ljava/lang/Object;(WebAppServletContext.java:698
7)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic/security/subject/AbstractSubject;Ljava/security/Privilege
dAction;)Ljava/lang/Object;(AuthenticatedSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(Lweblogic/security/acl/internal/AuthenticatedSubject;Lweblogic/security/acl/
internal/AuthenticatedSubject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;(SecurityManager.java:121)
        at weblogic.servlet.internal.WebAppServletContext.invokeServlet(Lweblogic/servlet/internal/ServletRequestImpl;Lweblogic/servlet
/internal/ServletResponseImpl;)V(WebAppServletContext.java:3892)
        at weblogic.servlet.internal.ServletRequestImpl.execute(Lweblogic/kernel/ExecuteThread;)V(ServletRequestImpl.java:2766)
        at weblogic.kernel.ExecuteThread.execute(Lweblogic/kernel/ExecuteRequest;)V(ExecuteThread.java:224)
        at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:183)
        at java.lang.Thread.startThreadFromVM(Ljava/lang/Thread;)V(Unknown Source)
>我QueryAction代码如下:public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
QueryForm queryForm = (QueryForm) form;

String key = queryForm.getKey();
int pageno = queryForm.getPageno();
BookDAO book=null;
Pager pager = null;
int pagesize = 20;

if (pageno==0)
{
pageno = 1;
}
try{
book = new BookDAO();
book.setPageno(pageno);
book.setPagesize(pagesize);
pager = book.findBookByName(key);
// for(;pager.getIt().hasNext();){
// System.out.println(((Book)pager.getIt().next()).getName());
// }
HttpSession session = request.getSession(false);
session.setAttribute("pager",pager);


return (mapping.findForward("success"));
}}我的流程是:queryBook.jsp(查询)---〉queryAction(处理及获取相应数据)---〉返回到queryBook.jsp郁闷死了,一直搞不定,请大家帮想象办法呀。

解决方案 »

  1.   

    你提供的信息不够,至少还要Pager、BookDAO类的代码,现在只能大概估计错误在你的pager.getIt()或 BookDAO.findBookByName(arg)中
      

  2.   

    BookDAO.findBookByName(arg)中代码如下:public class BookDAO extends AbstractQuery {

    public Pager findBookByName(String name) throws HibernateException{
         int totalRows = 0;
        
         java.util.List result;
            try {
             //get sum that accord with query condition
            totalRows = this.getTotalRows("select count(*) from Book where name like '" + name + "%'");
             //excute page query
           Query query = SessionUtil.currentSession().createQuery("from Book where name like :name");
            query.setString("name",name+"%");
             setQueryPage(query);
           List result = query.list();
            return new Pager(result.iterator(),totalRows);
             }
            catch(HibernateException e){
             throw e;
            }
            finally{
             SessionUtil.closeSession();
    }
           
        }pager.java如下;
    public class Pager implements Serializable{

    private int totalRows;
    private Iterator it;

    public Pager(Iterator it,int totalRows){

    this.it = it;
    this.totalRows = totalRows;
    } public Iterator getIt() {
    return it;
    } public void setIt(Iterator it) {
    this.it = it;
    } public int getTotalRows() {
    return totalRows;
    } public void setTotalRows(int totalRows) {
    this.totalRows = totalRows;
    }

    }其实在queryAction中我已经测试过了,可以获取到所需要的数据,但好像问题是出在return (mapping.findForward("success"));由于考虑到乱码问题,我用了一个过滤器类,但在上面的报错中说我这个类中也有问题,到底是什么问题,煎熬中。望继续给与帮助。
      

  3.   

    刚刚又有新发现,页面也可以出现预期的结果了,但是weblogic控制台中还是出现上面错误:
    <2006-4-16 下午11时08分51秒 CST> <Error> <HTTP> <BEA-101020> <[ServletContext(id=11971285,name=bookonline,context-path=/bookonline)] S
    rvlet failed with Exception
    java.util.NoSuchElementException
            at java.util.AbstractList$Itr.next()Ljava/lang/Object;(AbstractList.java:426)
            at jsp_servlet.__initial._jspService(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(__initi
    l.java:503)
            at weblogic.servlet.jsp.JspBase.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(JspBase.java:33)
            at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run()Ljava/lang/Object;(ServletStubImpl.java:1072)
            at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Lweblo
    ic/servlet/internal/FilterChainImpl;)V(ServletStubImpl.java:465)
            at weblogic.servlet.internal.TailFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/F
    lterChain;)V(TailFilter.java:28)
            at weblogic.servlet.internal.FilterChainImpl.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(FilterCh
    inImpl.java:27)
            at com.dong.bookstore.struts.EncodingFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servl
    t/FilterChain;)V(EncodingFilter.java:93)
            at weblogic.servlet.internal.FilterChainImpl.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(FilterCh
    inImpl.java:27)
            at weblogic.servlet.internal.RequestDispatcherImpl.forward(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(Req
    estDispatcherImpl.java:326)
            at org.apache.struts.action.RequestProcessor.doForward(Ljava/lang/String;Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet
    http/HttpServletResponse;)V(RequestProcessor.java:1063)
            at org.apache.struts.action.RequestProcessor.processForwardConfig(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/H
    tpServletResponse;Lorg/apache/struts/config/ForwardConfig;)V(RequestProcessor.java:386)
            at org.apache.struts.action.RequestProcessor.process(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletRes
    onse;)V(RequestProcessor.java:229)
            at org.apache.struts.action.ActionServlet.process(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletRespon
    e;)V(ActionServlet.java:1194)
            at org.apache.struts.action.ActionServlet.doPost(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletRespons
    ;)V(ActionServlet.java:432)
            at javax.servlet.http.HttpServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(Ht
    pServlet.java:760)
            at javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(HttpServlet.java:853        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run()Ljava/lang/Object;(ServletStubImpl.java:1072)
            at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Lweblo
    ic/servlet/internal/FilterChainImpl;)V(ServletStubImpl.java:465)
            at weblogic.servlet.internal.TailFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/F
    lterChain;)V(TailFilter.java:28)
            at weblogic.servlet.internal.FilterChainImpl.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(FilterCh
    inImpl.java:27)
            at com.dong.bookstore.struts.EncodingFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servl
    t/FilterChain;)V(EncodingFilter.java:93)
            at weblogic.servlet.internal.FilterChainImpl.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V(FilterCh
    inImpl.java:27)
            at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run()Ljava/lang/Object;(WebAppServletContext.java:69
    7)
            at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic/security/subject/AbstractSubject;Ljava/security/Privileg
    dAction;)Ljava/lang/Object;(AuthenticatedSubject.java:321)
            at weblogic.security.service.SecurityManager.runAs(Lweblogic/security/acl/internal/AuthenticatedSubject;Lweblogic/security/acl
    internal/AuthenticatedSubject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;(SecurityManager.java:121)
            at weblogic.servlet.internal.WebAppServletContext.invokeServlet(Lweblogic/servlet/internal/ServletRequestImpl;Lweblogic/servle
    /internal/ServletResponseImpl;)V(WebAppServletContext.java:3892)
            at weblogic.servlet.internal.ServletRequestImpl.execute(Lweblogic/kernel/ExecuteThread;)V(ServletRequestImpl.java:2766)
            at weblogic.kernel.ExecuteThread.execute(Lweblogic/kernel/ExecuteRequest;)V(ExecuteThread.java:224)
            at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:183)
            at java.lang.Thread.startThreadFromVM(Ljava/lang/Thread;)V(Unknown Source)