PV230 - cvičení 5 - příklady + postup
PV230 - cvičenie 5
Pridanie Eventov
jsp/detail/view.jsp
pridáme tlačidlo, ktoré na kliknutie vyvolá akciu (portlet:actionURL), ktorá bude znamenať, že užívateľ si chce kúpiť
daný produkt:
"buttons"
"<%=ACTION_ADD_TO_BASKET%>" var "addToBasketURL"
"<%=PARAM_PRODUCT_ID%>" "${product.id}"
key=" "/>"
DetailPortlet.java
pridáme spracovanie tejto akcie, ktoré spôsobí vyvolanie portletovej udalosti (eventu), ktorú bude spracovávať náš
ďaľší portlet
@ProcessAction(name=ACTION_ADD_TO_BASKET)
void actionBuy(ActionRequest request, ActionResponse response)public throws
PortletException, IOException {
productId = request.getParameter(PARAM_PRODUCT_ID);String
id = .parseLong(productId);long Long
ProductDTO product = ServiceProvider.getCatalogService().getProductById(id);
response.setEvent(EVENT_BUY_PRODUCT, product);
response.setRenderParameter(PARAM_PRODUCT_ID, productId);
}
portlet.xml
pridáme definíciu portletovej udalosti do portlet.xml (pozor na umiestnenie)
buyProductEventeu.ibacz.pv230.backend.dto.ProductDTO
deklarujeme, že portlet DetailPortlet túto udalosť odosiela
buyProductEvent
Konfigurácia Spring Portlet MVC
pom.xml
pridáme dependency na knižnicu Spring Portlet MVC:
org.springframeworkspring-webmvc-portlet3.0.3.RELEASE
upravíme aby ukazoval na správny adresár
web.xml
upravíme web.xml, tak aby jeho obsah bol:
contextConfigLocation/WEB-INF/spring-context/applicationContext.xmlorg.springframework.web.context.ContextLoaderListenerViewRendererServletorg.springframework.web.servlet.ViewRendererServlet1ViewRendererServlet/WEB-INF/servlet/view
applicationContext.xml
vytvoríme súbor WEB-INF/spring-context/applicationContext.xml, ktorý obsahuje všeobecnú konfiguráciu Springu
pre celú aplikáciu
pridáme importy na ďaľšie Springové konfiguračné súbory, ktoré sa nachádzajú v backende a nastavujú pripojenie
na databázu:
< resource= />import "classpath*:META-INF/liferay-data-source.xml"
< resource= />import "classpath*:META-INF/spring-backend.xml"
Tvorba 'portletu'
vytvoríme triedu s anotáciami @Controllereu.ibacz.pv230.simpleshop.portlet.basket.BasketViewController
a @RequestMapping("VIEW")
pridáme si atribút BasketService, pomocou ktorého budeme pracovať s košíkom. Tento atribút nám bude Spring
injectovať pomocou Dependency Injection:
@Autowired
BasketService basketService;private
pridáme metódu obsluhujúcu render požiadavky portletu - podobne ako je metóda z Portlet API:doView
@RenderMapping
renderDefault(RenderRequest request, Model model) {public String
BasketDTO basket = basketService.getBasket(request.getRemoteUser());
model.addAttribute(ATTRIBUTE_BASKET, basket);
JSP_VIEW;return
}
nakonfigurujeme ViewResolver v applicationContext.xml
"org.springframework.web.servlet.view.InternalResourceViewResolver"
"viewClass" "org.springframework.web.servlet.view.JstlView"
"contentType" "text/html;charset=UTF-8"
"prefix" "/WEB-INF/jsp/"
"suffix" ".jsp"
vytvoríme JSP stránku s portletom, na umiestnení ktoré sme určili v metóde :renderDefault
<%@include file= %>"../init.jspf"
<%@page = %>import " eu.ibacz.pv230.simpleshop.portlet.basket.BasketConstants.*"static