JSP Scriptlets работают по-разному для JS и HTML - PullRequest
0 голосов
/ 05 октября 2019

То, что я в основном пытаюсь сделать, это распечатать результаты поиска (все они передаются в один объект) из сервлета в динамическую таблицу в HTML.

Я не могу, дляЯ понимаю, почему сильный текст не работает со стороны JS.

Это раздел моего JSP на основе HTML, который работает.

<div id="dynaTable">
        <table>
            <tr>
                <td>Title</td>
                <td>Author</td>
                <td>Price</td>
            </tr>
            <%
                QueryResult result = (QueryResult) (request.getAttribute("result"));
                if (result == null) {
                    return;
                } else {
                    int len = result.getN();
                    int i_id[] = result.getI_id();
                    String title[] = result.getTitle();
                    String author[] = result.getAuthor();
                    float price[] = result.getPrice();
                    for (int i = 0; i < len; i++) {
            %>
            <tr>
                <td><%=title[i]%></td>
                <td><%=author[i]%></td>
                <td><%=price[i]%></td>
            </tr>
            <%
                }
            }
            %>
    </table>
</div>

Это раздел моего Javascriptна основе JSP, который НЕ работает.

<% QueryResult result = new QueryResult(); %>
<%try{%>
    <% result = (QueryResult) request.getAttribute("result"); %>
    <%int len = result.getN();%>
    <% request.setAttribute("length", len);%>
    console.log("<%=request.getAttribute("length")%>");
<%}catch(Exception e){%>
    console.log("In Catch Block");
<%}%>

Здесь, к сожалению, он всегда дает исключение. Вот трассировка стека:

org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [/Test] threw exception [An exception occurred processing [/assets/JS/itemList.jsp] at line [18]

15:         //$("#dynatable2").append("");
16:         <% QueryResult result = new QueryResult(); %>
17:             <% result = (QueryResult) request.getAttribute("result"); %>
18:             <%int len = result.getN();%>
19:         <%try{%>
20:             <% request.setAttribute("length", len);%>
21:             console.log("<%=request.getAttribute("length")%>");


Stacktrace:] with root cause
java.lang.NullPointerException

ПРИМЕЧАНИЕ. Если вы считаете, что существует исключение нулевого указателя, поскольку скрипт выполняется еще до поиска, то же самое происходит снова, когда я ищу что-то, что возвращаетрезультаты.

...