- Added by cygnusecks1, last edited by cygnusecks1 on Mar 16, 2009 (view change)
Comment:
Introduction
This page contains several examples used in the recent Web Space Deep Dive interview and presentation.
The below table contains pointers to examples that can be used directly to develop applications on GlassFish Web Space Server. Click on each of the links to see the code, and copy it into the appropriate files (following the Deep Dive webcast). For more information visit the Web Space Server homepage.
Files
| Filename (click to see code) |
Description |
|---|---|
| MovieDataEntry_view.jsp
MovieDataEntry_view.jsp <%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@ page import="javax.portlet.*"%> <%@ page import="com.example.service.model.*"%> <%@ page import="com.example.service.service.*"%> <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%> <%@ taglib uri="http://liferay.com/tld/ui" prefix="ui"%> <portlet:defineObjects /> <%PortletPreferences prefs = renderRequest.getPreferences();%> <% Class modelClazz = Movie.class; %> <% String msg = request.getParameter("message"); if (msg == null || msg.length() == 0) { msg = "Enter Movie Information"; } %> <ui:message key="<%=msg%>"/> <p> <form method="POST" action="<portlet:actionURL/>"> <table class="lfr-table"> <tr> <td> Movie Name: </td> <td> <ui:input-field fieldParam="name" field="name" model="<%=modelClazz%>"/> </td> </tr> <tr> <td> Cast: </td> <td> <ui:input-field fieldParam="starring" field="thecast" model="<%=modelClazz%>"/> </td> </tr> <tr> <td> Story: </td> <td> <ui:input-textarea param="story"/> </td> </tr> <tr> <td> Release Date: </td> <td> <ui:input-date dayParam="dp" monthParam="mp" yearParam="yp" yearRangeStart="2007" yearRangeEnd="2050"/> </td> </tr> <tr> <td> </td> <td> <input align="RIGHT" type="submit" value="Enter"/> </td> </tr> </table> </form> |
View JSP for entering initial movie data |
| MovieDataEntryPortlet.java
MovieDataEntryPortlet.java package com.example; import com.example.service.model.Movie; import com.example.service.service.MovieLocalServiceUtil; import com.liferay.portal.SystemException; import javax.portlet.GenericPortlet; import javax.portlet.ActionRequest; import javax.portlet.RenderRequest; import javax.portlet.ActionResponse; import javax.portlet.RenderResponse; import javax.portlet.PortletException; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.logging.Level; import java.util.logging.Logger; import javax.portlet.PortletRequestDispatcher; /** * MovieDataEntryPortlet Portlet Class */ public class MovieDataEntryPortlet extends GenericPortlet { @Override public void processAction(ActionRequest request, ActionResponse response) throws PortletException,IOException { String name = request.getParameter("name"); String starrings = request.getParameter("starring"); String story = request.getParameter("story"); String dp = request.getParameter("dp"); String mp = request.getParameter("mp"); String yp = request.getParameter("yp"); String dateString = yp + "/" + mp + "/" + dp; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/mm/dd"); Date convertedDate = null; try { convertedDate = dateFormat.parse(dateString); } catch (ParseException ex) { ex.printStackTrace(); } Movie m = MovieLocalServiceUtil.createMovie(name); m.setThecast(starrings); m.setReleaseDate(convertedDate); m.setStory(story); try { MovieLocalServiceUtil.addMovie(m); response.setRenderParameter("message", "Added Movie Succesfully."); } catch (SystemException ex) { Logger.getLogger(MovieDataEntryPortlet.class.getName()).log(Level.SEVERE, null, ex); response.setRenderParameter("message", "Unable to add Movie."); } } @Override public void doView(RenderRequest request,RenderResponse response) throws PortletException,IOException { response.setContentType("text/html"); PortletRequestDispatcher dispatcher = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/MovieDataEntry_view.jsp"); dispatcher.include(request, response); } } |
Java Portlet source code for Movie Data Entry portlet |
| MovieList_view.jsp
MovieList_view.jsp <%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@ page import="javax.portlet.*"%> <%@ page import="java.util.*"%> <%@ page import="com.example.service.model.*"%> <%@ page import="com.example.service.service.*"%> <%@ page import="com.liferay.portal.kernel.dao.search.*"%> <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%> <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> <%@ taglib uri="http://liferay.com/tld/ui" prefix="ui"%> <portlet:defineObjects /> <%PortletPreferences prefs = renderRequest.getPreferences();%> <% List headers = new ArrayList(); headers.add("Movies"); headers.add("Release Date"); SearchContainer sc = new SearchContainer(); sc.setHeaderNames(headers); sc.setEmptyResultsMessage("No movies found"); List resultRows = sc.getResultRows(); Collection<Movie> movies = MovieLocalServiceUtil.getMovies(); Iterator<Movie> it = movies.iterator(); int i = 0; while (it.hasNext()) { Movie m = it.next(); ResultRow row = new ResultRow(m.getName(), m.getName(), i++); PortletURL url = renderResponse.createActionURL(); url.setParameter("movie_name", m.getName()); row.addText(m.getName(), url); Date d = m.getReleaseDate(); String ds = ""; if (d != null) { ds = d.toString(); } row.addText(ds); resultRows.add(row); } %> <ui:search-iterator paginate="false" searchContainer="<%=sc%>"/> |
View JSP for viewing movie data |
| MovieListPortlet.java
MovieListPortlet.java import javax.portlet.GenericPortlet; import javax.portlet.ActionRequest; import javax.portlet.RenderRequest; import javax.portlet.ActionResponse; import javax.portlet.RenderResponse; import javax.portlet.PortletException; import java.io.IOException; import javax.portlet.PortletRequestDispatcher; import javax.xml.namespace.QName; /** * MovieListPortlet Portlet Class */ public class MovieListPortlet extends GenericPortlet { public void processAction(ActionRequest request, ActionResponse response) throws PortletException,IOException { try { QName qName = new QName("http://sun.com/webspace/moviesample", "moveName", "x"); String moveName_Data = request.getParameter("movie_name"); response.setEvent(qName, moveName_Data); } catch (Exception e) { e.printStackTrace(); } } public void doView(RenderRequest request,RenderResponse response) throws PortletException,IOException { response.setContentType("text/html"); PortletRequestDispatcher dispatcher = getPortletContext().getRequestDispatcher("/WEB-INF/jsp/MovieList_view.jsp"); dispatcher.include(request, response); } } |
Java Portlet source code for Movie Data viewer |
| movieservice.xml
movieservice.xml <?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.example.service"> <namespace>sample</namespace> <entity name='Movie' table='t_movie' local-service='true' remote-service='true'> <column name='name' type='String' primary='true'> </column> <column name='story' type='String'> </column> <column name='releaseDate' type='Date'> </column> <column name='thecast' type='String'> </column> </entity> <entity name='MovieFeedback' table='t_moviefeedback' local-service='true' remote-service='true'> <column name='id' type='long' primary='true'> </column> <column name='movieName' type='String'> </column> <column name='rating' type='String'> </column> <column name='feedback' type='String'> </column> <finder name='MovieName' return-type='Collection'> <finder-column name='movieName'> </finder-column> </finder> </entity> </service-builder> |
Service definition for movie and movie feedback data |
| MovieLocalServiceImpl.java (snippet)
MovieLocalServiceImpl.java public Collection<Movie> getMovies() { try { return moviePersistence.findAll(); } catch (SystemException ex) { Logger.getLogger(MovieFeedbackLocalServiceImpl.class.getName()).log(Level.SEVERE, null, ex); } return Collections.EMPTY_LIST; } |
Utility method for retrieving movie data |
| MovieFeedbackLocalServiceImpl.java (snippet)
MovieFeedbackLocalServiceImpl.java public Collection<MovieFeedback> getMovieFeedbacks(String name) { try { return movieFeedbackPersistence.findByMovieName(name); } catch (SystemException ex) { Logger.getLogger(MovieFeedbackLocalServiceImpl.class.getName()).log(Level.SEVERE, null, ex); } return Collections.EMPTY_LIST; } |
Utility method for retrieving movie feedback data |
| FeedbackViewer_view.jsp
FeedbackViewer_view.jsp <%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@ page import="javax.portlet.*"%> <%@ page import="java.util.*"%> <%@ page import="com.example.service.model.*"%> <%@ page import="com.example.service.service.*"%> <%@ page import="com.liferay.portal.kernel.dao.search.*"%> <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%> <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%> <%@ taglib uri="http://liferay.com/tld/ui" prefix="ui"%> <portlet:defineObjects /> <%PortletPreferences prefs = renderRequest.getPreferences();%> <% String movieName = renderRequest.getParameter("movie_name"); Collection<MovieFeedback> feedbacks = null; if (movieName != null) { feedbacks = MovieFeedbackLocalServiceUtil.getMovieFeedbacks(movieName); } else { movieName = "Select a movie to view feedback"; } %> <%=movieName%><br> <% if (feedbacks != null) { int i = 1; for (MovieFeedback mf:feedbacks) { %> <br><b>Feedback<%=i++%></b><br> <%=mf.getFeedback()%> <% } } %> |
View JSP for viewing movie feedback |
| MovieFeedback.java (snippet)
MovieFeedback.java public String button1_action() { try { int count = MovieFeedbackLocalServiceUtil.getMovieFeedbacksCount(); com.example.service.model.MovieFeedback mf = MovieFeedbackLocalServiceUtil.createMovieFeedback(++count); mf.setMovieName(getRequestBean1().getMovieName()); mf.setFeedback(getRequestBean1().getFeedback()); MovieFeedbackLocalServiceUtil.addMovieFeedback(mf); } catch (SystemException ex) { Logger.getLogger(MovieFeedback.class.getName()).log(Level.SEVERE, null, ex); } return "success"; } |
Action handler code for feedback entry portlet |
Comments (3)
Jun 22
raaaaa says:
Could you provide full source code ? It would be great for beginners.Could you provide full source code ? It would be great for beginners.
Aug 18
exboy1. says:
download the Developers guide at http://dlc.sun.com/pdf/820-7050/820-7050.pdf . ...download the Developers guide at http://dlc.sun.com/pdf/820-7050/820-7050.pdf . Then you can use the codes when following the guide.
Aug 27
adavila says:
What need to add to portlet.xml in order to work portlet intercomunication betwe...What need to add to portlet.xml in order to work portlet intercomunication between MovieListPortlet.java and FeedbackViewer_view.jsp?
This because you are using
try
catch (Exception e)
in this case i use
QName qName = new QName("http://localhost:8080/moveName", "moveName", "x");
and i added to portlet.xml
<event-definition>
<qname xmlns:x="http://localhost:8080/moveName">x:moveName</qname>
<value-type>java.lang.String</value-type>
</event-definition>
NO ERRORS but does not work