Liferay Portlet Podstawowy przepływ MVC i wybór widoku
Próbuję stworzyć podstawowy portlet za pomocą LifeRay 6.1. Jestem dobrze zaznajomiony z różnymi implementacjami MVC, ale uważam portlety Liferay / java za nieco mylące - zwłaszcza potok wykonywania.
Z większością frameworków MVC pracowałem z założeniem jest prosty widok> router> kontroler> widok. Wybór widoku zazwyczaj opiera się na konwencji nazewnictwa kontrolera / akcji, parametr przekazywany wraz z żądaniem lub ładowany ręcznie do akcji kontrolera.
Z LifeRay MVCPortlet nie działa tak; istnieją co najmniej dwa typy adresów URL, które można wygenerować - adres URL renderowania i adres URL akcji.
Wydaje się, że renderujący URL całkowicie omija to, co uważam za kontroler - podklasę MVCPortlet. Wydaje się, że te adresy URL są stosunkowo łatwe do wygenerowania, a żądanie ładuje oczekiwany widok, jeśli można to nazwać, biorąc pod uwagę wszystkie zamiary i cele, całkowicie omija kontroler i nie ma nic wspólnego z modelem.
<portlet:renderURL var="badminURL"><portlet:param name="mvcPath" value="/views/edit.jsp" /></portlet:renderURL>
Adres URL akcji przechodzi przez kontroler, wywoływana jest akcja, a następnie domyślny widok jest używany do renderowania portletu niezależnie od tego, co podaję jako ścieżkę mvc.
<portlet:actionURL var="adminURL" name="editSlide"><portlet:param name="mvcPath" value="/views/edit.jsp" /></portlet:actionURL>
Odczytywanie w drzewie klas Widzę, że właściwość jest używana do definiowania widoku, który zostanie użyty w zależności od trybu portletu. to znaczy
this.viewTemplate = "/views/edit.jsp";
this.editTemplate = "/views/edit.jsp";
Ponownie ustawienie tego po wywołaniu init () wydaje się mieć jakikolwiek efekt, gdy nie jest dostępny przez actionURL.
Domyślam się, że moje pytanie jest dość podstawowe, w jaki sposób wybierane są widoki i jak wybrać widok do użycia podczas przechodzenia przez actionURL. Bardzo pomocny byłby także każdy zarys rurociągu wykonawczego