class - 在我的 JSP 中遍历对象的数组列表时出现 HTTP 500 错误

标签 class jsp tomcat servlets arraylist

我收到此错误:HTTP Status 500 - 当我尝试迭代对象(我自己定义的类)的数组列表时,处理 JSP 页面时发生异常。

这是jsp文件中的代码

 <%
    class postClass{
        String username; //with username and postid, can go to edit to query for that exact post in database
        Integer postid;
        String title;
        Date modified;
        Date created;
        }
    %>
    <%
       ArrayList<postClass> list = (ArrayList<postClass>) request.getAttribute("list"); 

        for(postClass x : list) {
            System.out.println(x);
        }
    %> 

这是错误信息

HTTP Status 500 - Unable to compile class for JSP:
type Exception report

message Unable to compile class for JSP:

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 28 in the jsp file: /list.jsp
Syntax error on tokens, delete these tokens
25:     <%
26:        ArrayList<postClass> list = (ArrayList<postClass>) request.getAttribute("list"); 
27: 
28:        <% for(final postClass x : list) {
29:             out.println(x);
30:         } %>
31:    

编辑:更新代码以回答下面的问题。仍然产生错误

更新错误:

HTTP Status 500 - Unable to compile class for JSP:
type Exception report

message Unable to compile class for JSP:

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: [15] in the generated java file: [/var/lib/tomcat8/work/Catalina/localhost/editor/org/apache/jsp/list_jsp.java]
Syntax error on tokens, delete these tokens

Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:199)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:450)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:361)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:401)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:345)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    Editor.doGet(Editor.java:238)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.14 (Debian) logs.

最佳答案

您嵌套了“<%”和“%>”。这在jsp中是不允许的。第 28 行标记的语法错误表示第 28 行的“<%”标记。

正确的代码应该是

<%
class postClass{
    String username; //with username and postid, can go to edit to query for that exact post in database
    Integer postid;
    String title;
    Date modified;
    Date created;
    }
%>
<%
   ArrayList<postClass> list = (ArrayList<postClass>) request.getAttribute("list"); 
   for(final postClass x : list) {
        out.println(x);
    }
%> 

注意:如果 request.getAttribute("list") 返回 null,此代码将抛出空指针异常。最好先做空检查。

建议:java中的类名遵循以大写字母开头的约定。 postClass 应该重命名为 PostClass

关于class - 在我的 JSP 中遍历对象的数组列表时出现 HTTP 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55840869/

相关文章:

java - 从 jsp 页面接收 'null' 值到 Struts2 Action

spring - 通过 Spring MVC 框架包含其他 JSP 是个好主意吗?

tomcat - 在Tomcat上运行Errai时如何启用热重载?

Python 类共享变量给出了意外的输出

javascript - 如何使用JS自动在新窗口中打开外部链接(有异常(exception)规则)?

mysql - jsp sql更新查询

tomcat - Luminis/Liferay portlet 部署错误

c++ - 对`class::class() 错误的 undefined reference

JavaScript - "this"的所有者

java - Spring和Struts可以运行在同一个JVM中吗?