Első teendő az SDK beszerzése, ezt az alábbi utasítással tehejük meg:
A jelszó üres. Ezzel letöltöttük a legfrissebb forrást. Mielőtt használatba vennénk, szükséges beállítani az eléréseket. Ehhez hozzuk létre a gyökerébe egy build.{username}.properties fájlt, az alábbi tartalommal:svn co svn://svn.liferay.com/repos/public/plugins/trunk --username guest
app.server.dir=${user.home}/workspace/portal/bundles/tomcat-6.0.24
Értelemszerűen átírva, hogy egyezzen a használt rendszerrel. Ezután a portlet könyvtárban kiadva az alábbi parancsot, létrejön a portletünk váza:Ki is próbálhatjuk, ha a portlet mappájában buildelünk ant-al, akkor lefordítja, összepakolja és bemásolja a beállított deploy mappába, tehát azonnal használható is lesz../create.sh messagewall "Message Wall"
Szükségünk lesz egy service.xml fájlra, ez fogja leírni az adatbázis modelljét, amiből a ServiceBuilder le fogja generálni a szükséges fájlokat. Tehát a WEB-INF-be hozzunk létre egy service.xml fájlt, az alábbi tartalommal:
Az osztályok legenerálásához az alábbi utasítás használható:
<?xml version="1.0"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.0.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_6_0_0.dtd">
<service-builder package-path="hu.example.messagewall">
<namespace>MessageWall</namespace>
<entity name="Message" local-service="true" remote-service="false">
<!-- PK fields -->
<column name="messageId" type="long" primary="true" />
<!-- Audit fields -->
<column name="message" type="String" />
<!-- Order -->
<order by="desc">
<order-column name="message" />
</order>
</entity>
</service-builder>
ant build-serviceEz nem történik meg általános buildelésnél, de csak akkor van rá szükség, ha a service.xml vagy az Impl oszályok változnak.
Mivel szeretnénk Eclipse-el fejleszteni, ezért létre kell hoznunk egy projectet neki. Ehhez indítsunk egy Dynamic Web Project-et, írjuk be a nevét, töröljük a Project Contents pontot, majd válasszuk ki a portlet mappáját. Válasszunk Runtime-t, majd Next. Az src legyen docroot\WEB-INF\src, a build pedig docroot\WEB-INF\classes, majd Next. Itt a webcontent-et írjuk át docroot-ra, majd finish. A path errorok megoldására adjuk hozzá,hogy függjön a portál projecttől, majd a view.jsp-ben a taglib URI végéről a 2_0-t szedjük le, tehát így nézzen ki a sor:
Végül adjuk hozzá a service mappát forrásként, ezzel megszűnt az összes error. Ezután fel kell venni egy új üzenetet létrehozó metódust a service-be. Ehhez írjuk át a MessageLocalServiceImpl osztályt:<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
public class MessageLocalServiceImpl extends MessageLocalServiceBaseImpl {
public void createMessage(String msg) {
try {
Message m = createMessage(counterLocalService.increment());
m.setMessage(msg);
updateMessage(m);
} catch (SystemException e) {
e.printStackTrace();
}
}
}Ezután generáljuk le újra a service osztályokat. Végül fel kell vennünk egy portletet, ami majd az action-t kezeli:public class MessageWallPortlet extends MVCPortlet {
@Override
public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) throws IOException, PortletException {
MessageLocalServiceUtil.createMessage(ParamUtil.getString(actionRequest, "newMessage"));
}
}Majd meg kell mondanunk, hogy ezt a portletet használja, ehhez a portet.xml-t írjuk át:Ezután meg kell még írnunk a megjelnítést, ez a view.jsp-be kerül:<portlet-class>hu.example.messagewall.portlet.MessageWallPortlet</portlet-class>
Ezzel készen is vagyunk, lefordítva, kideployolva már használható is az üzenőfal.<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<%@page import="java.util.List"%>
<%@page import="hu.example.messagewall.model.Message"%>
<%@page import="hu.example.messagewall.service.persistence.MessageUtil"%>
<%@page import="hu.example.messagewall.service.impl.MessageLocalServiceImpl"%>
<%@page import="hu.example.messagewall.service.MessageLocalServiceUtil"%><portlet:defineObjects />
This is the <b>Message Wall2</b>.
Messages:
<%
List<Message> messages=MessageLocalServiceUtil.getMessages(-1,-1);
for(Message m:messages){
%>
<p><%=m.getMessage() %></p>
<%
}
%>
Create new message:
<form action="<portlet:actionURL/>" method="post">
Message:<input type="text" name="<portlet:namespace/>newMessage"/><input type="submit"/>
</form>
Kiegészítés:
Eclipse project létrehozásához használhatjuk az ant setup-eclipse utasítást, ezután importálhatjuk a workspace-be.
Nincsenek megjegyzések:
Megjegyzés küldése