Ответ 1
Лучшие практики
В идеале, в JSP больше не должно быть блоков <% // scriptlet %>
.
JSP настолько развились, что просто скрывали Java-код за Стандартными действиями и пользовательскими тегами с использованием языка выражений, JSTL и теперь выражений OGNL для получения результатов (только для обработанного запроса) из предварительно заполненных JavaBeans, доступных в любой из области приложения (например, сеанс, запрос, страница и т.д.) или сложные хранилища данных (например, ValueStack в Struts 2).
Итак, правильное решение будет выглядеть примерно так (не может использовать EL, потому что нам нужна ссылка "user" )
<jsp:useBean id="user" class="foo.User" /> <!-- scope="page" by default -->
Эта строка кода при добавлении в Title.jsp
создаст новый User
bean и добавит его в область page
, и эта же строка кода в Header.jsp
будет извлекать User
bean из области page
и присвойте ему ссылку с именем User
, которая затем может использоваться во всей остальной части файла.
Но, поскольку остальная часть кода Java не написана с помощью тегов, это не будет иметь большого смысла. Таким образом, вы также можете просто передать bean между двумя JSP как атрибут запроса, используя один из ваших блоков <%//scriptlet% > .
<% // in Title.jsp
request.setAttribute ("user", new User());
%>
<% // in Header.jsp
User user = request.getAttribute ("user");
user.setName ("John Doe");
%>
Ответ
Если база кода слишком велика для спасения, и использование любой из лучших практик просто непрактично; вы можете настроить среду Eclipse для игнорирования ошибок проверки синтаксиса JSP или лучше отключить их только для фрагментов JSP или определенных файлов и папок.
С веб-проектом, выбранным в рабочей области, перейдите к Project > Properties > Validation > JSP Syntax
. Затем Enable project specific settings
и выключите Validate JSP fragments
, как показано ниже.
Фрагмент JSP представляет собой файл .jspf
, который содержит сегмент JSP/HTML без открытия и закрытия тегов заголовков (если, конечно, это не заголовок или фрагмент нижнего колонтитула). Поэтому, хотя вам придется переименовывать ваши файлы в .jspf
для Eclipse, чтобы распознавать их как фрагменты (и не проверять); основные преимущества:
- файлы могут находиться в любой папке структуры
- расширение явно указывает на включение
- новые фрагменты автоматически идентифицируются
Если количество включенных файлов огромно или их нельзя переименовать по какой-то причине, ваш следующий лучший вариант - переместить их в отдельную папку (например, includes
), а затем исключить саму папку из проверки синтаксиса JSP.
Снова перейдите в меню "Проект" > "Свойства" > "Валидация" и включите специальные настройки проекта, нажмите кнопку "Тип поиска" [...]
для доступа к настройкам JSP Syntax Validator
.
В этом случае сначала создайте Exclude Group
, а затем Add Rule
до исключите папку (например, WebContent/includes на изображении) из проверки синтаксиса JSP.
Теперь Eclipse перестанет сообщать об ошибках для любого JSP файла, включенного в эту папку. Вы могли бы использовать один и тот же подход для отдельных файлов, но насколько он практичен, он будет снова зависеть от количества таких фрагментов, которые у вас есть.