我收到此错误: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/