这听起来像是一个奇怪的问题,但是我无法在Tomcat服务器上运行的J2EE应用程序中使用jstl标记库。这个相同的Web应用程序在GlassFish服务器上运行得很好,但是当我创建另一个项目并复制使用jstl标记的signup.jsp时,出现了错误。我的PageController代码是,

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("ai");
        try {

            request.getRequestDispatcher("pages/signup.jsp").forward(request, response);

        } finally {
            out.println("af");
            out.close();
        }
    }


在此仅打印“ af”,而不打印“ ai”。现在,如果我从signup.jsp中删除​​jstl代码,则该代码将运行良好。现在我的问题是我是否必须添加任何其他文件才能使jstl文件在tomcat服务器中工作?
提前致谢。

最佳答案

RequestDispatcher#forward(..)状态的Javadoc


  在响应已提交给forward之前,应先调用RequestDispatcher
  客户端(在刷新响应主体输出之前)。如果回应
  已经提交,此方法将引发
  IllegalStateException。响应缓冲区中未提交的输出是
  转发前自动清除。


因此,有道理的是

out.println("ai");


不打印。但是标签库似乎没有任何关系。另外,该规范没有说明有关中的标签库的任何内容,因此它可能只是特定于供应商的行为。

关于java - 在Tomcat服务器上使用JSTL标签库的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23158855/

10-09 00:52
查看更多