这是jsp页面这样写的时候报的错误:
<logic:iterate id="numall" name="numall" scope="request">
<tr>
<td>
${numall.callerno}
</td>
<td>
jzk
</td>
<td>
jzk
</td>
</tr>
</logic:iterate>
2007-12-30 14:33:24 ApplicationDispatcher[/fxsql] Servlet.service() for servlet jsp threw exception
javax.servlet.jsp.el.ELException: The "." operator was supplied with an index value of type "java.lang.String" to be applied to a List or array, but that value cannot be converted to an integer.
at org.apache.commons.el.Logger.logError(Logger.java:481)
at org.apache.commons.el.Logger.logError(Logger.java:498)
at org.apache.commons.el.Logger.logError(Logger.java:566)
at org.apache.commons.el.ArraySuffix.evaluate(ArraySuffix.java:227)
at org.apache.commons.el.ComplexValue.evaluate(ComplexValue.java:145)
at org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:263)
at org.apache.commons.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:190)
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:899)
at org.apache.jsp.telnumdo_jsp._jspx_meth_logic_present_1(telnumdo_jsp.java:208)
at org.apache.jsp.telnumdo_jsp._jspx_meth_html_html_0(telnumdo_jsp.java:114)
at org.apache.jsp.telnumdo_jsp._jspService(telnumdo_jsp.java:63)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:703)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.jzk.fx.filter.EncodingFilter.doFilter(EncodingFilter.java:22)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:702)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:644)
at java.lang.Thread.run(Thread.java:595)
若jsp页面这样写的时候没错误
<logic:iterate id="numall" name="numall" scope="request">
<tr>
<td>
jzk
</td>
<td>
jzk
</td>
<td>
jzk
</td>
</tr>
</logic:iterate>
我想总是我的标签写的出了问题了吧实现类我是这样写的
public List queryNUMAll(XgsxCallLog xgsxCallLog) throws Exception {
List numall = new ArrayList();
String hql = "SELECT callerno,calleeid,startTime,endTime,endTime-startTime as offset FROM XgsxCallLog WHERE callerno=?";
Query q = super.getSession().createQuery(hql);
q.setString(0, xgsxCallLog.getCallerno());
numall = q.list();
return numall;
}action里面是这样
public ActionForward seltelnum(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
Xgsx_Call_LogForm xgsx_Call_LogForm = (Xgsx_Call_LogForm) form;
XgsxCallLog xgsxCallLog=new XgsxCallLog();
xgsxCallLog.setCallerno(xgsx_Call_LogForm.getTelnum());
try {
List numall=this.ixgsx_call_logdao.queryNUMAll(xgsxCallLog);
request.setAttribute("numall", numall);
return mapping.findForward("seltelnumsuccess");
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("flagseltelnum", "error");
return mapping.findForward("seltelnumfailure"); }
}有高手帮忙解决下吗谢谢

解决方案 »

  1.   

    <logic:iterate   id="numall"   name="numall"   scope="request"> <<-此id另外起个名字,例如innerRow
    <tr> 
    <td> 
    ${numall.callerno} <<-如果上面id改为innerRow,此行写为:<bean:write name="innerRow" property="callerno"/>
    </td> 
    <td> 
    jzk 
    </td> 
    <td> 
    jzk 
    </td> 
    </tr> 
    </logic:iterate> 
      

  2.   

    修改后是这样:
    <logic:iterate       id="innerRow "       name="numall"       scope="request"> 
    <tr>   
    <td>
    <bean:write   name="innerRow"   property="callerno"/> 
    </td>   
    <td>   
    jzk   
    </td>   
    <td>   
    jzk   
    </td>   
    </tr>   
    </logic:iterate>   
      

  3.   

    <logic:iterate  id="content" name="numall" scope="request" type="yourpackage.XgsxCallLog">   
    <tr>       
    <td> 
    <bean:write name="content"  property="XgsxCallLog的属性名"/>   
    </td>       
    <td>       
    jzk       
    </td>       
    <td>       
    jzk       
    </td>       
    </tr>       
    </logic:iterate>     
      

  4.   

    试了dgqbcht 大哥的以后
    <logic:iterate id="jzk" name="numall" scope="request" type="org.jzk.fx.vo.XgsxCallLog">
    <tr>
    <td>
    <bean:write name="jzk" property="callerno"/> 
    </td>
    <td>
    jzk
    </td>
    <td>
    jzk
    </td>
    </tr>
    </logic:iterate>
    出现了这个错误:org.apache.jasper.JasperException: [Ljava.lang.Object;
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:346)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.jzk.fx.filter.EncodingFilter.doFilter(EncodingFilter.java:22)
    root cause java.lang.ClassCastException: [Ljava.lang.Object;
    org.apache.jsp.telnumdo_jsp._jspService(telnumdo_jsp.java:118)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.jzk.fx.filter.EncodingFilter.doFilter(EncodingFilter.java:22)
      

  5.   

    试了applebomb   大哥的以后 
    <logic:iterate id="jzk" name="numall" scope="request">
    <tr>
    <td>
    <bean:write name="jzk" property="callerno"/> 
    </td>
    <td>
    jzk
    </td>
    <td>
    jzk
    </td>
    </tr>
    </logic:iterate>出现了以下错误:
    javax.servlet.ServletException: No getter method for property callerno of bean jzk
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
    org.apache.jsp.telnumdo_jsp._jspService(telnumdo_jsp.java:163)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.jzk.fx.filter.EncodingFilter.doFilter(EncodingFilter.java:22)
    root cause javax.servlet.jsp.JspException: No getter method for property callerno of bean jzk
    org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:973)
    org.apache.struts.taglib.bean.WriteTag.doStartTag(WriteTag.java:225)
    org.apache.jsp.telnumdo_jsp._jspx_meth_bean_write_0(telnumdo_jsp.java:240)
    org.apache.jsp.telnumdo_jsp._jspService(telnumdo_jsp.java:123)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
    org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    org.jzk.fx.filter.EncodingFilter.doFilter(EncodingFilter.java:22)
    note The full stack trace of the root cause is available in the Apache Tomcat/5.0.25 logs.
      

  6.   

    那你先试试不用iterate标签用java代码生写能不能接收成功。
      

  7.   

    impl类中
    public List<String> queryNUMAll(XgsxCallLog xgsxCallLog) throws Exception {
       List<String> numall = new ArrayList<String>();
      String hql = "SELECT callerno,calleeid,startTime,endTime,endTime-startTime as offset FROM XgsxCallLog WHERE callerno=?";
      Query q = super.getSession().createQuery(hql);
      q.setString(0, xgsxCallLog.getCallerno());
      numall=q.list();
      System.out.println("numall的类型"+numall.getClass().getName());
      //return ((String [])numall.toArray(new String [0]));
         return numall;
     }
    impl中numall的类型java.util.ArrayList
    action中
    public ActionForward seltelnum(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response) {
      Xgsx_Call_LogForm xgsx_Call_LogForm = (Xgsx_Call_LogForm) form;
      XgsxCallLog xgsxCallLog=new XgsxCallLog();
      xgsxCallLog.setCallerno(xgsx_Call_LogForm.getTelnum());
      try {
       List numall=this.ixgsx_call_logdao.queryNUMAll(xgsxCallLog);
       request.setAttribute("numall", numall);
       System.out.println("action中numall的类型"+numall.getClass().getName());   
       return mapping.findForward("seltelnumsuccess");
      } catch (Exception e) {
       e.printStackTrace();
       request.setAttribute("flagseltelnum", "error");
       return mapping.findForward("seltelnumfailure");  }
     }
    action中numall的类型java.util.ArrayLisjsp中
    <logic:iterate id="jzk" name="numall" scope="request">
        <%
        System.out.println("jsp中numall的类型:"+jzk.getClass().getName());
         %>
    </logic:iterate>
    jsp中numall的类型:[Ljava.lang.Object;大哥我该怎么做才能正确呢
    <logic:iterate id="jzk" name="numall" scope="request">
        <tr>
         <td>
             <bean:write   name="jzk"   property="callerno"/> 
         </td>
         <td>
          jzk 
         </td>
         <td>
          jzk
         </td>
        </tr>
    </logic:iterate>这样写的话会跳出java.lang.ClassCastException:   [Ljava.lang.Object;  这个错误
      

  8.   

    你的这个List里存的是什么,如果是含有callerno属性的一个个对象,那要为这些对象的类定义callerno属性的get方法,这样无论是用${}还是用<bean:write>才能得到值!
      

  9.   

    先试jsp头部加入<%@ page import="org.jzk.fx.vo.XgsxCallLog" %>,看能否正确接收。若不行,试试这样写,不用iterate标签能否正确接收。
    <%@ page import="java.lang.ArrayList" %>
    <%@ page import="org.jzk.fx.vo.XgsxCallLog" %>
    <%
    ArrayList list=(ArrayList)request.getAttribute("numall");
    for(int i=0;i<list.size();i++){
    XgsxCallLog log=(XgsxCallLog)list.get(i);
    %> 属性名:<%=log.getXxx()%>
    }
    %>