liferay training struts portlet

30

Upload: saikrishna-basetti

Post on 19-May-2015

5.138 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Liferay Training Struts Portlet
Page 2: Liferay Training Struts Portlet

The goal of this tutorial is to add an Action Class to the Struts Portlet and to display an maximized state of window

1. Define the Action◦ struts-config.xml◦ tiles-defs.xml

2. Create JSP files◦ view_sample.jsp◦ view.jsp◦ init.jsp

3. Create Action Class to process submit◦ ViewSampleAction.Java

Page 3: Liferay Training Struts Portlet

What are the main differences between a JSP Portlet and a Struts Portlet?◦ JSP Portlet goes directly to a JSP◦ Struts Portlet has an page flow

Where does the page flow get defined?struts-config.xml – define the page flow tiles-defs.xml – define the page layout

Page 4: Liferay Training Struts Portlet

struts-config.xml defines the page flow<action path="/ext/sample/view_sample"

type="com.ext.portlet.sample.action.ViewSampleAction"><forward name="portlet.ext.sample.view" path="portlet.ext.sample.view" /><forward name="portlet.ext.sample.view_sample" path="portlet.ext. sample.view_sample" />

</action>

What is type?It is a Struts defined way of passing control to the

ViewSampleAction class

Page 5: Liferay Training Struts Portlet

Lets look at the forward nodes<forward name="portlet.ext.sample.view"

path="portlet.ext.sample.view" /><forward name="portlet.ext.sample.view_sample"

path="portlet.ext.sample.view_sample" />

What is name?It the unique identifier for that forward node

What is path?This is your link to the tiles-def.xml

Page 6: Liferay Training Struts Portlet

tiles-defs.xml defines the page layout<definition name="portlet.ext.sample.view" extends="portlet">

<put name="portlet_content" value="/portlet/ext/sample/view.jsp" /></definition><definition name="portlet.ext.sample.view_sample" extends="portlet">

<put name="portlet_content" value="/portlet/ext/sample/view_sample.jsp" />

</definition>

Page 7: Liferay Training Struts Portlet

open init.jsp in the sample directory…\ext\ext-web\docroot\html\portlet\ext\sample\init.jsp

init.jsp should contain this line:<%@ include file="/html/common/init.jsp" %>

This will gives us access to the Liferay tag libraries.

Page 8: Liferay Training Struts Portlet

<%@ include file="/html/portlet/ext/sample/init.jsp" %><h1>Hi! This is Sample Struts Portlet Example.... </h1>

<a href="<portlet:renderURL windowState="<%= WindowState.MAXIMIZED.toString() %>" />">Click here for Maximized view</a>

Page 9: Liferay Training Struts Portlet

public class ViewSampleAction extends PortletAction {

public ActionForward render(ActionMapping mapping, ActionForm form, PortletConfig portletConfig,RenderRequest renderRequest, RenderResponse renderResponse)throws Exception {

if (renderRequest.getWindowState().equals(WindowState.NORMAL)) {return mapping.findForward("portlet.ext.sample.view");

} else {List sample = new ArrayList();

sample.add("One"); sample.add("Two"); sample.add("Three");

renderRequest.setAttribute("sample", sample);

return mapping.findForward("portlet.ext.sample.view_sample");}}

}

Page 10: Liferay Training Struts Portlet

struts-config.xmlpath=“/ext/sample/view_sample”type=“…ViewSampleAction”

ViewSampleActionsetForward=“...sample.view”

view.jspSubmit to struts_action

If window state is maximized/portlet/ext/sample/view_sample.jspIf window state is normal/portlet/ext/sample/view.jsp

Page 11: Liferay Training Struts Portlet

Once you have finished modifying all of the files, deploy them to Tomcat

Page 12: Liferay Training Struts Portlet

1. Restart Tomcat2. Open up a new browser and type

http://localhost:8080LOGIN: [email protected]: test

Page 13: Liferay Training Struts Portlet

portlet-ext.xml

struts-config.xml

tiles-defs.xml

view.jsp

ViewSampleAction

struts-config.xml

tiles-defs.xml

View_sample.jsp

struts-config.xml

Page 14: Liferay Training Struts Portlet
Page 15: Liferay Training Struts Portlet

1. Create a database structure◦ service.xml

2. Auto generating the Service Layer code◦ build.xml – build-service

3. Create table TrainingEntry in training database

4. Create method to add record to the database◦ TrainingEntryLocalServiceImpl.java◦ TrainingEntryServiceImpl.java

5. create files◦ ViewTrainingAction.java◦ Init.jsp◦ view.jsp◦ View_training.jsp

6. Retrieve Records from the Database for display◦ View_training.jsp

Page 16: Liferay Training Struts Portlet

create service.xml file in the \ext\ext-impl\src\com\ext\portlet\training directory

Page 17: Liferay Training Struts Portlet

<?xml version="1.0"?><!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 5.1.0//EN"

"http://www.liferay.com/dtd/liferay-service-builder_5_1_0.dtd">

<service-builder package-path="com.ext.portlet.training"><namespace>Training</namespace><entity name="TrainingEntry" local-service="true" table="TrainingEntry" remote-service="true" persistence-

class="com.ext.portlet.training.service.persistence.TrainingEntryPersistenceImpl">

<!-- PK fields --><column name="entryId" type="long" primary="true" /><!-- Audit fields --><column name="createDate" type="Date" /><column name="modifiedDate" type="Date" /><!-- Other fields --><column name="name" type="String" /><column name="description" type="String" /><!-- Order --><order by="asc"><order-column name="name" case-sensitive="false" /></order>

</entity><exceptions><exception>EntryName</exception></exceptions></service-builder>

Page 18: Liferay Training Struts Portlet

open build-parent.xml file in the \ext\ext-impl directory

Add target to build the service for newly created service.xml

<target name="build-service-training"><antcall target="build-service">

<param name="service.file" value="src/com/ext/portlet/training/service.xml"/></antcall>

</target>

Page 19: Liferay Training Struts Portlet

1. Right click build-parent.xml from ext-impl2. Point to Run As Ant Build3. Select the target name which you have

given. Eg. Build-service-training4. Click on Apply and run.

Page 20: Liferay Training Struts Portlet

1. Right Click build.xml Run As2. Type cmd and press Enter3. Navigate to C:\Training\liferay\ext\ext-ejb\4. Type ant build-service in the command prompt.

Page 21: Liferay Training Struts Portlet
Page 22: Liferay Training Struts Portlet

Retrieving records from the data base will include updating a Service Layer Class and regenerating the wrapper classes

We will add a getAll() method to TrainingEntryLocalServiceImpl.java

And TrainingEntryServiceImpl.java

Page 23: Liferay Training Struts Portlet

Add an getAll() methodpublic List getAll()

throws PortalException, SystemException {

TrainingEntryUtil.findAll();}

import java.util.List; Regenerate the Service Layer to create a

wrapper class for getAll()

Page 24: Liferay Training Struts Portlet

Add an getAll() methodpublic List getAll()

throws PortalException, SystemException {

TrainingEntryLocalServiceUtil.getAll();}

import java.util.List; Regenerate the Service Layer to create a

wrapper class for getAll()

Page 25: Liferay Training Struts Portlet

Add an create() methodpublic TrainingEntry create(TrainingEntry trainingEntry)

throws PortalException,SystemException{return TrainingEntryUtil.update(trainingEntry, false);

} Regenerate the Service Layer to create a

wrapper class for create()

Page 26: Liferay Training Struts Portlet

Add an create() methodpublic TrainingEntry create(TrainingEntry trainingEntry)

throws PortalException,SystemException{return TrainingEntryLocalServiceUtil.update(trainingEntry, false);

} Regenerate the Service Layer to create a

wrapper class for create()

Page 27: Liferay Training Struts Portlet

To Add A Record:long entryId =

CounterLocalServiceUtil.increment(TrainingEntry.class.getName());TrainingEntry trainingEntry = TrainingEntryUtil.create(entryId);trainingEntry.setName(name);trainingEntry.setDescription(description);trainingEntry.setCreateDate(new Date());trainingEntry.setModifiedDate(new Date());TrainingEntryLocalServiceUtil.create(trainingEntry);

To Retrieve The Records

List training = new ArrayList();training = TrainingEntryLocalServiceUtil.getAll();

Page 28: Liferay Training Struts Portlet

<form action="<portlet:actionURL windowState="<%= WindowState.NORMAL.toString() %>" ><portlet:param name="struts_action" value="/ext/training/view_training" /><portlet:param name="CMD" value="ADD" /> </portlet:actionURL>" method="post" name="<portlet:namespace />fm" onSubmit="submitForm(this); return false;">

<table width="50%" cellpadding="2" cellspacing="2" align="center"><tr>

<td width="25%">Name: </td><td width="25%"><input name='name' type="text" /></td>

</tr><tr>

<td>Description: </td><td><input name='description' type="text" /></td>

</tr></table><br><table width="10%" align="center">

<tr><td><input name='submit' type="submit" value='<%=

LanguageUtil.get(pageContext, "Add")%>' ></td>

</tr></table></form>

Page 29: Liferay Training Struts Portlet

<%@ include file="/html/portlet/ext/training/init.jsp" %> <%@ page import="com.ext.portlet.training.model.TrainingEntry" %> <% List training = (List)request.getAttribute("training"); %>

<table width="60%" cellpadding="2" cellspacing="2"> <tr> <th> Id </th> <th> Name </th> <th> Description </th> <th> Created On </th> </tr> <% for (int i = 0; i < training.size(); i++) { TrainingEntry trainingEntry = (TrainingEntry)training.get(i); %> <tr> <td><%= trainingEntry.getEntryId() %></td> <td><%= trainingEntry.getName() %></td> <td><%= trainingEntry.getDescription() %></td> <td><%= trainingEntry.getCreateDate() %></td> </tr> <% } %> </table>

Page 30: Liferay Training Struts Portlet

Q & A