Можно ли вызывать методы в одной JSP из другой при использовании динамического включения? - PullRequest
0 голосов
/ 12 апреля 2019

Мне нужно вызвать в JSP метод, который определен в другом JSP, который должен быть включен динамически (включить страницу), а не статически (включить файл), но я получаю ошибку компиляции jsp "метод не определен". Он отлично работает, когда я использую <% @ include file = ""%>.

Причина, по которой мне это нужно, заключается в том, что наш JSP становится слишком большим, и мы получаем следующую ошибку: «Код метода _jspService (HttpServletRequest, HttpServletResponse) превышает ограничение 65535 байт» (откуда необходимо динамически включать другие jsps ), поэтому мы разделяем некоторые его функции на меньшие JSP.

Foo.jsp

<%@page language="java"%>
<%!

public String getSomeID(String param) throws Exception {
    return "someId";
}

%>

Bar.jsp

<jsp:include page="Foo.jsp"></jsp:include>

String id = getSomeID(param);

Я знаю, что лучшим вариантом здесь является использование сервлета предварительной обработки. Мы, вероятно, сделаем это. Но сейчас я просто хочу знать, возможно ли вызывать методы из другого jsp, в то же время динамически включая его.

1 Ответ

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

Вы не можете ссылаться на код из Foo.jsp в Bar.jsp , если вы делаете это с jsp: include .

Обе страницы в этом случае компилируются в независимые сервлеты за сценой.Давайте назовем их Foo_Servlet и Bar_Servlet .

В этом случае на самом деле происходит следующее: Bar_Servlet при обработке запроса передает управление и исходный запрос Foo_Servlet .Как только Foo_Servlet завершает ответ на выполнение Foo_Servlet (а не оригинальный код jsp) объединяется с ответом Bar_Servlet .

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