JSP включает сбой страницы с помощью request.getContextPath()

Я пытаюсь включить страницу jsp в другую, и, поскольку я не хочу жестко кодировать пути, я хочу использовать методы request.getContextPath(). Но я просто не могу заставить его работать. Я пробовал разные вещи, основываясь на разных ответах здесь:

Первое, что я сделал, это

<jsp:include  page="<%=request.getContextPath()%>/structure/Navbar.jsp" />

дает мне:

HTTP Status 500 - /structure/ArtiMarziali/Aikido.jsp (line: 11, column: 24) attribute value for [page] is not properly terminated

Итак, я попытался:

<% String aikido = request.getContextPath() + "/structure/Navbar.jsp"; %>
<jsp:include  page="<%= aikido %>" />

выдает исключение:

HTTP Status 500 - javax.servlet.ServletException: File [/ProgettoPW/structure/Navbar.jsp] not found

Затем:

<jsp:include  page="<%= request.getContextPath() + "/structure/Navbar.jsp"  %>" />

говорит, что мне нужно избежать кавычек, что я не могу сделать

а также

<jsp:include  page='<%= request.getContextPath() + "/structure/Navbar.jsp"  %>' />

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

Я действительно не знаю, в чем проблема, мне нужна помощь, спасибо.

(Да, я знаю, что использование ‹%= %> и других скриптлетов в настоящее время осуждается, но мой курс преподавался таким образом, и я хочу придерживаться его для проекта)

Изменить: это структура файла, может быть полезно:

введите здесь описание изображения


person Paul    schedule 24.09.2016    source источник
comment
Вы пробовали просто <jsp:include page="/structure/Navbar.jsp" /> ?   -  person Nicolas Filotto    schedule 24.09.2016
comment
Да, и это работает, но я действительно не понимаю, почему это работает, если я делаю это так, но не с помощью getContextPath(). Связывание файлов css и изображений отлично работает с ним, но не включает в себя jsp. (И, как я уже сказал, я не хочу использовать жестко закодированные пути на случай, если я буду перемещать вещи)   -  person Paul    schedule 24.09.2016
comment
это работает, потому что путь уже относится к пути контекста, поэтому, надеюсь, нам не нужно его добавлять   -  person Nicolas Filotto    schedule 24.09.2016
comment
Ах, да. Ты прав, я совсем забыл об этом. Я идиот. Благодарю вас! (Если вы хотите опубликовать это как ответ, я отмечу его как правильный)   -  person Paul    schedule 24.09.2016


Ответы (1)


Путь уже относительен к контекстному пути, так что вам не нужно добавлять его в директиву include (надеюсь), что означает, что это будет работать:

<jsp:include page="/structure/Navbar.jsp" />
person Nicolas Filotto    schedule 24.09.2016