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

questionAnswers(1)

yourAnswerToTheQuestion