Mam portleta w Liferay, który pokazuje listę elementów i pozwala dodać / edytować (dodać / zapisać / listę przedmiotów wykonanych przez Builder Service).

Teraz potrzebuję oddzielnej strony Liferay z dodawaniem tylko nowej funkcjonalności - można to zrobić za pomocą jednego portletu, czy powinienem skopiować go do oddzielnego portletu?

Myślę, że potrzebuję:

  1. sposób otwarcia portletu z przekierowaniem do edycji formularza (edit.jsp)
  2. Sposób przekierowania do innej strony Liferay z Param (ItemId), który otworzyłby tę stronę w danych szczegółach.jsp i nie standardowy View.jsp.

==== Edytuj:

Teraz mam takie linki:

Detale:

<liferay-portlet:renderURL varImpl="rowURL">
    <portlet:param name="backURL" value="<%= portletURLString %>" />
    <portlet:param name="mvcPath" value="/html/details.jsp" />
    <portlet:param name="itemId" value="<%= String.valueOf(item.getId()) %>" />
</liferay-portlet:renderURL>

Dodaj:

<liferay-portlet:renderURL varImpl="addURL">
    <portlet:param name="mvcPath" value="/html/edit.jsp" />
</liferay-portlet:renderURL>

Ale działają tylko w tym samym portlecie / stronie.

W LifAy mam dwie strony publiczne: "Szukaj / szczegóły" i "Dodaj".

Na stronie "Dodaj" portlet powinien renderować edit.jsp (drugi adres URL). Następnie po akcji powinienem przekierować autoryzowany użytkownik na stronę "Szukaj / Szczegóły" z identyfikatorem nowo utworzonego elementu i pokaż swoje dane.

Mogę stworzyć dwa portlety, ale jestem pewien, że jest lepszy i więcej rozwiązania Liferayish do tego problemu.

0
tester.one 29 styczeń 2018, 19:09

4 odpowiedzi

Najlepsza odpowiedź

Możesz ustawić domyślny widok za pomocą preferencji portletów / konfiguracji niestandardowej. Twój portlet, p, może mieć parametr konfiguracyjny dla "typu" portletu A powinien być (w przypadku masz dwa typy, "widoku" i "szczegóły"). Na podstawie tego parametru można odpowiednio obsługiwać logikę renderowania / działania.

W ten sposób, z dwoma układami, L1 i L2, można umieścić instancję P na L1 i ustawić jego typ na "Widok". Następnie możesz umieścić kolejną instancję P na L2.

W komponentach P (Ex. Polecenie Renderowania) Możesz sprawdzić typ (widok lub szczegół) i masz tutaj kontrolę nad logiką render / akcji zgodnie z innymi przypadkami użytkowej (JSP, którego chcesz użyć itp.)

Aby uzyskać więcej informacji na temat konfiguracji w Liferay 7 Patrz:

1
William Burnham 12 luty 2018, 18:56

Jeśli masz układ statyczny swojej witryny i wiesz, jaki portlet zostanie umieszczony, w którym można użyć parametru PLID (Page Layout ID) parametru tagu Liferay-Renderurl. To pozwala nie tylko do portletów, ale także stron. Plid jest zwykle ładowany z pewnej konfiguracji.

Kolejną sztuczką, jak ponowne wykorzystanie istniejącego kodu, jest ponowne wykorzystanie rzeczywistego klas formularza i działania i tworzenie tylko nowych definicji portletów. Spodziewa się to, że używasz wzoru polecenia Liferay MVC + Action.

1
Miroslav Ligas 15 luty 2018, 16:25

Twój problem jest nieco wysokim poziomem, ale rozwiązania są następującymi technikami:

  1. Możesz zdefiniować Przyjazny adres URL dla twojego portletu, który przeniesie parametry bezpośrednio w portlecie.

W twoim portlecie możesz zareagować na parametry wyświetlanie dowolnego JSP.

  1. Jeśli zdefiniowałeś przyjazny adres URL od 2. Możesz go łatwo użyć w linku:

    & LT; A HREF = "/ My-Form-Page / - / My-Param1 / My-Param2" & GT; Edytuj i LT; / A & GT;

Jeśli możesz podać trochę przykładowego kodu, możemy przejść więcej do szczegółów.

0
Manuel Manhart 6 luty 2018, 09:54

Brak hard-N-szybkiej reguły do tworzenia oddzielnych portletów do wyświetlania / dodawania / aktualizacji działań. To całkowicie zależy od ciebie.

Możesz to osiągnąć za pomocą jednego (tego samego) portletu na wielu stronach, które domyślnie widoku widoku. Wystarczy ustawić target="_blank" na kotwicy (s) widoku aukcji dla rowURL i addURL, aby otworzyć ten link na nowej karcie. Reszta będzie obsługiwana przez lifecykling portletu, aby uczynić konkretny widok na podstawie zestawu portlet:param dla adresu URL.

Inny sposób wokół może być zwykłą przekierowaniem do strony z itemId=abc i action=add/update jako QueryString. W {{x2}

0
Parkash Kumar 6 luty 2018, 14:05