Осуществляет ли проект Eclipse Web Tools Project рефакторинг внутри JSP? - PullRequest
6 голосов
/ 11 февраля 2009

Я установил проект Web Tools для Eclipse версии 3.4. Я пытался заставить рефакторинг работать так, как я думаю, и не имел успеха.

У меня есть один проект Java, который содержит классы Java для jar-файла, который помещен в / WEB-INF / lib для веб-сайта. Другой проект (динамический веб-проект) имеет файлы JSP для того же сайта. Динамический веб-проект настроен с проектом Java как необходимый проект в пути сборки. Я также установил опцию Project References для проекта Dynamic Web, чтобы ссылаться на Java Project.

Если я использую рефакторинг для изменения имени метода в одном из классов Java, я ожидаю, что ссылки на этот метод в JSP будут переименованы. Но это не работает. Изменены ссылки в ссылках в проекте Java, который содержит класс, и в других проектах Java, использующих этот класс, но не ссылки на метод внутри JSP.

Я возился с ним несколько дней, пробуя разные версии Eclipse и WTP. Удаление всех моих проектов и файлов и настройка их снова. Ничто не имеет значения.

Это работает для кого-то еще? Что-то особенное, что мне нужно установить, чтобы это работало?

Ответы [ 4 ]

2 голосов
/ 24 апреля 2009

Пожалуйста, проголосуйте за это возможно здесь . Или создайте новый более конкретный запрос функции. По этой ссылке вы можете видеть, что существует много проблем, связанных с рефакторингом и JSP, но лишь немногие знают, что если они проголосуют за них, они с большей вероятностью будут реализованы в следующем выпуске Eclipse.

Пожалуйста, скопируйте и исправьте ссылку перед использованием, потому что она повреждена. «+» Становится «% 2B». Вот правильная ссылка: https://bugs.eclipse.org/bugs/buglist.cgi?quicksearch=jsp+refactor

2 голосов
/ 11 февраля 2009

Мой опыт работы с тем, как WTP (или любой другой вариант Eclipses) обрабатывает код Java в блоках скриплетов в файле JSP, всегда был ужасен: он никогда не работает должным образом или так, как вы ожидаете. Я видел, как Eclipse добавляет операторы <jsp:import> в середине файла JSP и выполняет все другие виды странного форматирования.

Мой единственный совет - избегать редактирования кода в JSP внутри Eclipse.

(Мой другой совет - , а не - поместить Java-код непосредственно в файл JSP и перейти на архитектуру MVC, но это тема для другого дня ...)

2 голосов
/ 12 февраля 2009

Извините, это не прямой ответ на ваш вопрос, но, тем не менее, решение вашей проблемы ... возможно, это поможет, в противном случае, пожалуйста, игнорируйте:

Как подсказывает matt b, вы не должны помещать java-код в jsp. Вместо этого просто используйте теги. Если вы используете стандартную библиотеку тегов , там есть почти все, что вам нужно. Для вещей, с которыми вы должны справиться самостоятельно, очень просто написать свои собственные теги, когда вы знаете, о чем они.

С помощью этого трюка вы получите лучшую архитектуру приложения (представление), возможность для тестов (надеюсь, что они вам понравятся), придерживайтесь принципа DRY (не повторяйте себя) и поместите весь код Java в файлы .java, так они легко подберутся с помощью любого инструмента.

Существует даже опция для web.xml для принудительного отключения сценариев, оставляя теги работающими, но если вы уже вложили огромные средства в jsps со сценариями, это может быть не то, что вам нужно ...

<jsp-config>
  <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <scripting-invalid>true</scripting-invalid>
  </jsp-property-group>
</jsp-config>

Другой ответ на вопрос, который вы не задавали, заключается в том, что IntelliJ Idea отлично справляется со сценарием, о котором вы говорите (хотя я использую затмение каждый день, это одно из различий между обеими IDE)

0 голосов
/ 11 февраля 2009

Возможно, я вас не правильно понимаю, но похоже, что вы кладете классы в банку или на войну, прежде чем пытаетесь провести рефакторинг. Рефакторинг предназначен для текущего проекта, а не для чего-либо в вашем пути сборки.

Если я неправильно понял ваш вопрос, прошу прощения.

...