1.
我在一个JSP里嵌套另一个JSP页面 如下: display参数是传的JSP
<jsp:include page="${param.display}" flush="true"/>
运行后出现异常  但不影响程序正常操作
java.lang.StringIndexOutOfBoundsException: String index out of range: -12.
过滤器里页面跳转
request.getRequestDispatcher("index.jsp?display=Picture.jsp").forwar(request,response);
异常
java.lang.IllegalStateException: Cannot forward after response has been committed改成Response后
((HttpServletResponse)Response).sendRedirect("Login.jsp");
没有异常 显示空白页~~应该说的够清楚了吧~~~~
很郁闷~`求高手解

解决方案 »

  1.   

    晕,用eclise写就不会出现这样的问题了
      

  2.   

    StringIndexOutOfBoundsException 明显是越界错误...,仔细查下
    有可能的话,把核心代码贴上来..
      

  3.   

    对~`数组越界
    他提示就是我嵌套那一行,核心代码...一个JSP页面..全是标签 发来也没什么用
    我把嵌套的JSP写死了就没问题了
    所以我想问以下这个标签为什么会有数组越界异常
      

  4.   

    <jsp:include page="${param.display}" flush="true"/> 
    值是通过变量传进来的,你看看传的值对不?先写成静态的看还会有问题不?一步一步分析。。
      

  5.   

    把参数写成静态的没有问题我一开始运行的是login.jsp页面  和这个页面没什么关系
    但运行起来后<jsp:include page="${param.display}" flush="true"/> 马上就出了数组越界异常
    但并不影响程序正常运行
    这个很郁闷~`
      

  6.   

    Cannot forward after response has been committed 应该是你在
    request.getRequestDispatcher("index.jsp?display=Picture.jsp").forwar(request,response); 
    前面已经执行过跳转...请确认...
      

  7.   

    java.lang.StringIndexOutOfBoundsException: String index out of range: -1 
    字符串的下标越界异常,你的代码再仔细检查一下
      

  8.   

    to 12.
    package com.superet.filter;import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    import com.superet.vo.UserBean;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;public class BuyFilter extends HttpServlet implements Filter {
        private FilterConfig filterConfig;
        //Handle the passed-in FilterConfig
        public void init(FilterConfig filterConfig) throws ServletException {
            this.filterConfig = filterConfig;
        }    //Process the request/response pair
        public void doFilter(ServletRequest request, ServletResponse response,
                             FilterChain filterChain) {
            try {
                UserBean ub = (UserBean) ((HttpServletRequest) request).getSession().
                                        getAttribute("login");
                          if (ub == null) {
                              System.out.println("buynull");
                              ((HttpServletResponse)response).sendRedirect("Login.jsp");
                          } else if (!ub.getType().equals("采购员") &&!ub.getType().equals("超级管理员")) {
                              System.out.println("buyquanxian");
                              ((HttpServletResponse)response).sendRedirect("index.jsp?display=Picture.jsp");
                          } else {
                              System.out.println("buyok");
                              filterChain.doFilter(request, response);
                          }
            } catch (IOException iox) {
                filterConfig.getServletContext().log(iox.getMessage());
            } catch (ServletException ex) {
                ex.printStackTrace();
            }    }    //Clean up resources
        public void destroy() {
        }
    }我所有的跳转语句都用if(){}else{}隔开了
      

  9.   

    to 千里冰封
    运行后的错误提示指定的是嵌套这一行
    <jsp:include page="${param.display}" flush="true"/>
    而我把page="picture.jsp"写死后就没有错了
    所以才很郁闷,这个标签难道也会有字符串的下标越界异常吗
      

  10.   

    param是el的内部对象,说明你没有传递display这个参数,你可以在你的地址中增加?display=picture.jsp
      

  11.   

    java.lang.IllegalStateException: Cannot forward after response has been committed
    这个可能是你用out对象写了东西后flush,造成的。这个我曾经碰到过第一个问题,param本身他就是个array形式的,造成这个问题有可能是哪个直没有接到吧。。
    我是这么考虑的,不知道对你有帮助没。
      

  12.   

    谢谢楼上几位朋友~但是在servlet里我好象没有用out去写东西
    LS是怎么解决的
    <jsp:include page="${param.display}" flush="true"/>
    这个我一开始运行的不是这个页面
    我一开始运行的是login.jsp 运行起来后就出错了
    登陆后才转交到index.jsp?display=pricture.jsp
    如果要一开始就给传值 我不知道该怎么传这种嵌套我在另一个程序中用过 一模一样的用法
    但那个不知道怎么就没错
      

  13.   

       ((HttpServletResponse)Response).sendRedirect("Login.jsp"); 
      没有异常 显示空白页~~    空白页的问题,我以前页遇到过,没有异常,开始认为是struts-config.xml的问题,后来发现是转发到的页面有问题。你看一下是不是Login.jsp的问题啊
      

  14.   

    JSP没有问题
    页面跳转只是在filter里跳不过去
    在普通servlet里和jsp里都可以跳转的
      

  15.   

    request.getRequestDispatcher("index.jsp?display=Picture.jsp").forwar(request,response); 
    你太牛了,大哥,forward  给你一个介意,写程序时请细心  心细  再心细
      

  16.   

    谢谢提醒~``我把这句话复制到记事本上后 他在forward后换行了
    我又 <- 一下想弄成一行 没注意删掉了d
    我....
      

  17.   

    ((HttpServletResponse)response).sendRedirect("index.jsp?display=Picture.jsp");
    是这块有错误吧。。你都sendRedirect了,那么request 里的对象肯定都没。我觉得这些有问题。。
    再一个,没有必要在前边再加个强制转换response,我觉得还是不要用sendRedirect,用forward试试吧
      

  18.   

    用request.getRequestDispatcher("index.jsp?display=Picture.jsp").forward(request,response); 
    会出现异常
    java.lang.IllegalStateException: Cannot forward after response has been committed 
    这个异常会不会是因为我嵌套页面的关系想不通·~
    请问还有没有别的页面跳转的办法
      

  19.   

    java.lang.IllegalStateException: Cannot forward after response has been committed  
    反正这个异常可能是转发了2次造成的