org.springframework.web.servlet.mvc.Controller
jest handleRequest trwa HttpServletRequest
i HttpServletResponse
jako parametry. Z tego nie można przetworzyć fragmentu URI. W związku z tym kontroler nie nadaje się do kontrolowania żądań na podstawie fragmentu URI.
W mojej aplikacji zaimplementowałem bardzo podobną koncepcję do kontrolera Spring. Moja aplikacja wciąż ma pojęcie "widoków" i "modelu". Każdy widok jest zaimplementowany w oddzielnej klasie i jest wyświetlany w centralnym bloku strony. Chciałem scentralizować logikę przetwarzania URL do tej klasy, więc stworzyłem klasę AbstractControllerEntry
:
public static abstract class AbstractControllerEntry {
public abstract boolean matches(String fragment);
public abstract void open(MainWindow window, String fragment);
}
z kilku podklas convenience, takich jak ConstantEntry
, PrefixEntry
i RegexEntry
.
Każda klasa widoku ma metodę statyczną, która zwraca AbstractControllerEntry
.Zbiór wszystkich pozycji przechowywany jest w statycznej tablicy wewnątrz klasy MyController
(nie jest to kontroler Spring MVC). Po zmianie fragmentu (patrz UriFragmentUtility), powtarzam wszystkie wpisy, a po pierwsze, które mecze, będę wywoływać otwarte. Każda inna logika, taka jak znalezienie obiektu modelu, znajduje się wewnątrz klasy widoku, w implenacji AbstractControllerEntry
.
Dodatkowo istnieje inna statyczna metoda generowania fragmentu URI w klasie widoku, dzięki czemu każde odniesienie do widoku jest prawdziwym odwołaniem do klasy, jest to rozwiązanie dla przerwanych łączy. A każdy widok ma metodę instancji, aby uzyskać fragment dla bieżącego widoku, który jest sprawdzany w celu dopasowania do wpisu kontrolera w celu zwiększenia niezawodności.
będę odwoływać się bardzo kompletny SpringApplication: http://dev.vaadin.com/svn/incubator/SpringApplication/ – rochb
Ja również poszukuje integracji Vaadin z wiosennym MVC. Odpowiedź, którą podałeś, to integracja ze Spring (wtrysk zależności itp.). Nie widzę tego ... Dzięki –
Dodam także: http://dev.vaadin.com/ticket/4132 i http://vaadin.com/forum/-/message_boards/message/112083, ale jest w zasadzie o tym samym –