2012-01-26 5 views
6

У меня есть много JSP-файлов с EL-выражениями формы ${foo.bar.baz.phleem1}, ${foo.bar.baz.phleem2} и т. Д. (Первые два или три сегмента равны). Для уменьшения EL Lookups Я в процессе рефакторинга эти страницы:Выражения рефрактора EL в JSP

Источник:

<c:out value="${foo.bar.baz.phleem1}" /> 
<c:out value="${foo.bar.baz.phleem2}" /> 
<c:out value="${foo.bar.baz.phleem3}" /> 

После рефакторинга:

<c:set var="baz" value="${foo.bar.baz}" /> 
<c:out value="${baz.phleem1}" /> 
<c:out value="${baz.phleem2}" /> 
<c:out value="${baz.phleem3}" /> 

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

Есть ли поддержка для такого типа рефакторинга в Eclipse или IntelliJ Idea?

+2

Не в Eclipse, насколько я знаю. В Eclipse вы можете предварительно просмотреть результаты поиска и заменить результаты рядом друг с другом и пометить неправильные совпадения в списке перед применением. – BalusC

+0

Обновлено тем, что я сделал. –

+0

Я проверил. IDEA 11.0.1 также не поддерживает такой рефакторинг. – Vadzim

ответ

0

Да. Вы можете использовать держатели мест в Eclipse с помощью регулярных выражений и соответственно изменить их.

относятся следующие URL для регулярных выражений в затмении http://www.eclipse.org/tptp/home/downloads/installguide/gla_42/ref/rregexp.html

Нажмите Поиск [Ctrl + H], Check Регулярное выражение опции и FilePattern в Jsp.

enter image description here

Нажмите Ctrl + пробел для содержания помочь.

enter image description here

Нажмите поиск соответствия, Заменить, чтобы заменить все соответствует струны в одном дыхании. Вы можете использовать Regex группы для замены содержимого

enter image description here

enter image description here

enter image description here

+1

OP хорошо знает об этом: * «Я знаю, что могу сделать большую часть этого с помощью поиска/замены, но он чувствует себя небезопасным, поскольку он игнорирует структуру кода». * OP больше искал те же функции рефакторинга, что и в обычном исходном коде Java Alt + Shift + L. – BalusC

+1

Этот ответ на самом деле не говорит, как делать то, что задает ОП, только то, что он может использовать, чтобы собрать свое собственное решение, которое, вероятно, не будет эквивалентно операции «извлечения». – millimoose

+0

Я использовал то же самое для достижения переименования пакетов примерно для .. 350 файлов java в одном снимке :)! Я чувствовал, что это может помочь использовать группы регулярных выражений :) –

1

Может быть, вы можете использовать nxml-режим в Emacs. (я не тестировал его) Существуют некоторые функции, такие как nxml-up-element. Бьюсь об заклад, вы можете создать мощный макрос. Но я думаю, что его легче сгладить код и сделать это вручную.

+0

Hahaha, +1 для сумасшедших предложений emacs –

+0

Основная проблема заключается в том, что наши JSP не являются хорошо сформированным XML. В противном случае я сам взломал бы XML-инструмент. –

Смежные вопросы