Ошибка HTTP 500 при переборе массива объекта в моем JSP - PullRequest
0 голосов
/ 25 апреля 2019

Я получил эту ошибку: 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.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

У вас есть <% ... ℅>, вложенный в ваш код Java.Удалите эти токены, как подсказывает ошибка.

0 голосов
/ 25 апреля 2019

Вы вложили '<%' и '%>'.Это не разрешено в JSP.Синтаксическая ошибка для токенов в строке: 28 обозначает токен «<%» в строке 28. </p>

Правильный код должен быть

<%
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").Лучше сначала выполнить нулевую проверку.

Предложение: Имена классов в java следуют соглашению, начинающемуся с заглавной буквы.postClass следует переименовать в PostClass

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...