2012-01-26 23 views
6

Mam wiele plików JSP z wyrażeń EL w postaci ${foo.bar.baz.phleem1}, ${foo.bar.baz.phleem2} itp. (Pierwsze dwa lub trzy segmenty są równe). Aby zmniejszyć EL wyszukiwań Jestem w procesie refaktoryzacji te strony:Refleksja EL wyrażenia w JSPs

Źródło:

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

Po refactoring:

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

wiem, że mogę zrobić większość tego z wyszukiwaniem/wymiana, ale czuje się niebezpiecznie, ponieważ ignoruje strukturę kodu.

Czy istnieje wsparcie dla tego typu refaktoryzacji w Eclipse lub IntelliJ Idea?

+2

Nie w Eclipse, o ile wiem. W Eclipse można jednak wyświetlić podgląd wyników i zastąpić wyniki obok siebie i odznacz nieprawidłowe dopasowania na liście przed zastosowaniem. – BalusC

+0

Zaktualizowany tym, co zrobiłem. –

+0

Sprawdziłem. IDEA 11.0.1 również nie obsługuje tego rodzaju refaktoryzacji. – Vadzim

Odpowiedz

0

Tak. Możesz użyć uchwytów lokalizacji w Eclipse używając wyrażeń regularnych i odpowiednio zmienić.

patrz poniższy adres URL do wyrażenia regularnego w Eclipse http://www.eclipse.org/tptp/home/downloads/installguide/gla_42/ref/rregexp.html

Kliknij Search [Ctrl + D], sprawdź opcję wyrażenie regularne i filepattern do JSP.

enter image description here

Naciśnij Ctrl + przestrzeń dla treści pomagać.

enter image description here

Kliknij wyszukiwania dla dopasowania, Zamień, aby zastąpić wszystkie dopasowane ciąg jest w jednym zamachem. Można używać grup regex do zastąpienia zawartości

enter image description here

enter image description here

enter image description here

+1

OP zdaje sobie z tego sprawę: * "Wiem, że mogę zrobić większość z wyszukiwania/zamiany, ale czuję się niebezpiecznie, ponieważ ignoruje strukturę kodu." * OP bardziej szukał tej samej funkcji refaktoryzacji, co w normalnym kodzie źródłowym języka Java. Alt + Shift + L. – BalusC

+1

Ta odpowiedź tak naprawdę nie mówi, jak zrobić to, o co prosi OP, tylko po to, aby wykorzystać własne rozwiązanie, które prawdopodobnie nie będzie równoznaczne z operacją "wyodrębnij zmienną". – millimoose

+0

Użyłem tego samego, aby zmienić nazwę pakietu na około 350 plików Java w jednym ujęciu :)! Czułem, że może to pomóc w korzystaniu z grup wyrażania regularnych :) –

1

Może użyć nxml-mode w emacs. (Nie testowałem tego) Istnieje kilka funkcji, takich jak nxml-up-element. Założę się, że możesz stworzyć potężne makro. Ale myślę, że łatwiej jest go ściągnąć i zrobić to ręcznie.

+0

Hahaha, +1 za szalone sugestie emacsa –

+0

Głównym problemem jest to, że nasze strony JSP nie są dobrze sformułowanym XML. W przeciwnym razie samodzielnie zhackowałem niektóre narzędzia oparte na XML. –