Creating Spring Mvc Project in liferay 7
First
we need to download
àLiferay 7 Bundle
consist following things
àLiferay
7 Eclipse
Required software’s
->MSql
5.6+
->JDK1.8
Creating
Project Step’s:
1.Open eclipse
2.Open Perspective and change to Liferay Workspace
3.Create the Workspace for your project.
àOpen
Package Explorer.
àRight
Click New-LiferayWorkspace Project.
àEnter
Workspace Name -next-Finish.
4.In create Package Explorer
à Right
Click New- Liferay Module Project.
àType
Project Name
àSelect
Build Type
*
gradle-module
àSelect
Project Template Name-(mvc-Portlet)
àFinsh
5.In create Package Explorer(Creating Service)
à Right
Click New- Liferay Module Project.
àType
Project Name
àSelect
Build Type
*
gradle-module
àSelect
Project Template Name-(Service-builder)
àFinsh
After clicking on finish the project structure will be
as follow.
Example: Workspace-sample
Potlet
name – Admin
As shown in below image.
The above project gives the default structure of Liferay
Mvc with build tool gradel
Now we need to convert the liferayMvc to Spring Mvc
with gradel.
To convert from Liferay
Mvc to SpringMvc we need all xml files with web.xml and other Required Folder
Structure like Webapps,jsp and context file.
We have
To create a folder structure for spring mvc as folder structure should have its
own webapp folder inside that css ,js and WEB-INF folder as to be created.
Inside
WEB-INF folder we need to declare all the xml files.
Like as follows.
1.Liferay-display.xml
2. liferay-plugin-package.properties
3. liferay-portlet.xml
4. portlet.xml
5. web.xml
With xml files we need to have some more folder
structure also which are important.
1.Jspà
Where we should create all the jsp pages which are required for our project.
2.
Spring-ContextàThis
folder we will be using to declared the Spring configuration details. I will be
containing 2 files as flows.
In this Two class we will be declaring Spring
Configuration and Bean tag.
SpringMvcWithGradel-portlet.xml:
<?xml version="1.0"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
>
<!--
<context:component-scan base-package="SpringMVC.portlet" />
-->
<bean class="SpringMVC.portlet.SpringMVCPortlet"
/>
</beans>
portlet-application-context.xml:
<?xml version="1.0"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
>
<context:annotation-config />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property
name="contentType" value="text/html;charset=UTF-8" />
<property name="prefix"
value="/WEB-INF/jsp/" />
<property name="suffix"
value=".jsp" />
<!--
<property name="prefix" value="/META-INF/resources/"
/>
<property
name="suffix" value=".jsp" /> -->
<property
name="viewClass" value="org.springframework.web.servlet.view.JstlView"
/>
</bean>
</beans>
liferay-display.xml:
<?xml version="1.0"?>
<!DOCTYPE display
PUBLIC "-//Liferay//DTD
Display 6.2.0//EN" "http://www.liferay.com/dtd/liferay-display_6_2_0.dtd">
<display>
<category name="category.sample">
<portlet id="SpringMVCPortlet"
/>
</category>
</display>
liferay-plugin-package.properties:
author=Liferay, Inc.
change-log=
licenses=LGPL
liferay-versions=7.0.0+
long-description=
module-group-id=liferay
module-incremental-version=1
name=Spring MVC
page-url=http://www.liferay.com
short-description=
12required-deployment-contexts = my-hook
tags=
liferay-portlet.xml:
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app
PUBLIC "-//Liferay//DTD
Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>SpringMVCPortlet</portlet-name>
<icon>/icon.png</icon>
<requires-namespaced-parameters>false</requires-namespaced-parameters>
<header-portlet-css>/css/main.css</header-portlet-css>
<footer-portlet-javascript>/js/main.js</footer-portlet-javascript>
<css-class-wrapper>SpringMVCPortlet</css-class-wrapper>
</portlet>
<role-mapper>
<role-name>administrator</role-name>
<role-link>Administrator</role-link>
</role-mapper>
<role-mapper>
<role-name>guest</role-name>
<role-link>Guest</role-link>
</role-mapper>
<role-mapper>
<role-name>power-user</role-name>
<role-link>Power User</role-link>
</role-mapper>
<role-mapper>
<role-name>user</role-name>
<role-link>User</role-link>
</role-mapper>
</liferay-portlet-app>
portlet.xml:
<?xml version="1.0"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd
http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
version="2.0">
<portlet>
<portlet-name>SpringMVCPortlet</portlet-name>
<display-name>SpringMVCPortlet</display-name>
<portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
<init-param>
<name>contextConfigLocation</name>
<value>/WEB-INF/spring-context/portlet/SpringMvcWithGradle-portlet.xml</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<resource-bundle>content/Language</resource-bundle>
<portlet-info>
<title>SpringMVCPortlet</title>
<short-title>SpringMVCPortlet</short-title>
<keywords>SpringMVCPortlet</keywords>
</portlet-info>
<security-role-ref>
<role-name>administrator</role-name>
</security-role-ref>
<security-role-ref>
<role-name>guest</role-name>
</security-role-ref>
<security-role-ref>
<role-name>power-user</role-name>
</security-role-ref>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
</portlet>
</portlet-app>
web.xml:
<?xml version="1.0"?>
<web-app
version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-context/portlet-application-context.xml</param-value>
</context-param>
<servlet>
<servlet-name>ViewRendererServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.ViewRendererServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ViewRendererServlet</servlet-name>
<url-pattern>/WEB-INF/servlet/view</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
build.gradle:
Gradle is an open source build automation system that builds upon
the concepts of Apache Ant and Apache Maven and introduces a Groovy-based
domain-specific language (DSL) instead of the XML form used by Apache Maven for
declaring the project configuration.
In our Project we use WAR file.
buildscript {
repositories
{
mavenLocal()
maven {
url
"https://cdn.lfrs.sl/repository.liferay.com/nexus/content/groups/public"
}
}
dependencies
{
classpath group: "com.liferay", name:
"com.liferay.gradle.plugins.css.builder", version:
"latest.release"
classpath group: "com.liferay", name:
"com.liferay.css.builder", version: "latest.release"
}
}
apply plugin:
'war'
war {
dependsOn
buildCSS
exclude('**/*.scss')
filesMatching("**/.sass-cache/") {
it.path
= it.path.replace(".sass-cache/",
"")
}
includeEmptyDirs
= false
}
dependencies {
compileOnly
group: "com.liferay.portal", name:
"com.liferay.portal.kernel", version: "2.0.0"
compileOnly
group: "com.liferay.portal", name:
"com.liferay.util.taglib", version: "2.0.0"
compileOnly
group: "javax.portlet", name: "portlet-api", version: "2.0"
compileOnly
group: "javax.servlet", name: "javax.servlet-api", version: "3.0.1"
compileOnly
group: "jstl", name: "jstl", version: "1.2"
compileOnly
group: "org.osgi", name: "osgi.cmpn", version:
"6.0.0"
compileOnly
group: 'org.osgi', name: 'osgi.core', version: '6.0.0'
compile
group: 'aopalliance', name: 'aopalliance', version: '1.0'
compile
group: 'commons-logging', name: 'commons-logging', version: '1.2'
compile
group: 'commons-beanutils', name:
'commons-beanutils', version: '1.2'
compile
group: 'commons-fileupload', name:
'commons-fileupload', version: '1.2'
compile
group: 'commons-io', name: 'commons-io', version: '1.0'
compile
group: 'org.springframework', name: 'spring-aop',
version: '4.1.9.RELEASE'
compile
group: 'org.springframework', name: 'spring-beans', version: '4.1.9.RELEASE'
compile
group: 'org.springframework', name: 'spring-context', version: '4.1.9.RELEASE'
compile
group: 'org.springframework', name: 'spring-core', version: '4.1.9.RELEASE'
compile
group: 'org.springframework', name: 'spring-expression', version:
'4.1.9.RELEASE'
compile
group: 'org.springframework', name: 'spring-webmvc-portlet', version: '4.1.9.RELEASE'
compile
group: 'org.springframework', name: 'spring-webmvc',
version: '4.1.9.RELEASE'
compile
group: 'org.springframework', name: 'spring-web', version: '4.1.9.RELEASE'
compileOnly
project (":modules:DemoService:DemoService-api")
compileOnly
project (":modules:DemoService:DemoService-service")
}
Download all the library
files which is mentioned above
First
Page navigation:
In
controller we need to specify that when the porlet start which page has to be
visible. This thing can be specified in Controller inside Giving
@RenderMapping. Before that we need configure the controller with Annotation’s @Controller(value
= "SpringMVCPortlet")
@RequestMapping("view") .
Loading 1st view.jsp page we need to
specify in RenderMapping.
Calling
Action Method:
In jsp we need to give actionUrl Tag as shown below.
Handling
in controller
In Liferay SpringMvc if we need to create Render Url 1st
step is we need to specify that Render method in jsp page before calling that
page. After that we need to set that in
“response.setParameter(“actiontype”,”MethodName”)”
After that we need to create the method.
Step1:
Step2:
Step3:
Creating
a Site Programatically:
We can create the site programmatically by using
following code.
View.jsp:
<%@ include file="init.jsp" %>
<%
ThemeDisplay
td = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
%>
<c:if test="<%=td.isSignedIn()%>">
<portlet:defineObjects />
<theme:defineObjects/>
<%
PortletPreferences commonpref =
renderRequest.getPreferences();
String commonvalue =
(String)commonpref.getValue("commonvalue", "Hello! Welcome to our portal.");
//Group group =
(Group)request.getAttribute("site.group");
//Group liveGroup =
(Group)request.getAttribute("site.liveGroup");
LayoutSetPrototype layoutSetPrototype
= (LayoutSetPrototype)request.getAttribute("site.layoutSetPrototype");
//boolean showPrototypes = GetterUtil.getBoolean(request.getAttribute("site.showPrototypes"));
long
companyid=company.getCompanyId();
String
languageid=user.getLanguageId();
long liveGroupId = 0;
//Group group =
(Group)request.getAttribute(WebKeys.);
List<Group>
objgroup=GroupLocalServiceUtil.getGroups(0,
GroupLocalServiceUtil.getGroupsCount());
Group group=objgroup.get(0);
long groupId =
BeanParamUtil.getLong(group, request, "groupId");
//System.out.println("Here are
group :"+group);
Group stagingGroup = null;
Group liveGroup = null;
if (group != null) {
if
(group.isStagingGroup()) {
liveGroup = group.getLiveGroup();
stagingGroup = group;
}
else {
liveGroup = group;
if
(group.hasStagingGroup()) {
stagingGroup =
group.getStagingGroup();
}
}
}
liveGroupId = liveGroup.getGroupId();
/* System.out.println("Here are livegroup
id :"+liveGroupId);
System.out.println("Here are companyid :"+companyid);
System.out.println("Here are liveGroup :"+liveGroup);
System.out.println("Here are groupId :"+groupId); */
request.setAttribute("group", group);
%>
<%=commonvalue %>
<portlet:renderURL var="test">
<portlet:param name="action"
value="test"/>
</portlet:renderURL>
<portlet:actionURL var="creatURL"
>
<portlet:param name="action"
value="Create"/>
</portlet:actionURL>
<aui:form action="<%=creatURL %>"
method="post">
<liferay-ui:error key="sitename"
message="The site you has enter already eits"
/>
<aui:input name="commonvalue"
type="hidden" value="<%=commonvalue %>"/>
<aui:input name="liveGroupId"
type="hidden" value="<%=liveGroupId%>"
/>
<aui:input name="companyid"
type="hidden" value="<%=companyid%>"
/>
<aui:input name="languageid"
type="hidden" value="<%=languageid%>"
/>
<aui:input name="groupId"
type="hidden" value="<%= groupId %>"
/>
<aui:input name="group"
type="hidden" value="<%= group %>"
/>
<aui:input name="sitename"
label="Enter Site" type="text" value="">
<aui:validator name="required"></aui:validator></aui:input>
<aui:input name="discription"
label="Enter site discription" type="textarea" value="">
</aui:input>
<aui:button type="submit"
value="Create site" ></aui:button>
</aui:form>
</c:if>
Contoller:
@ActionMapping(params="action=Create")
public void Create(ActionRequest
po_actionRequest ,
ActionResponse
po_actionResponse) throws Exception
{
/*Service Tracker
Methods calling*/
group = new GroupServiceTracker(this);
group.open();
layoutSet = new
LayoutSetServiceTracker(this);
layoutSet.open();
LayoutSetLocalService layoutSetLocalService = layoutSet.getService();
GroupLocalService groupLocalService = group.getService();
try {
String lc_siteName=po_actionRequest.getParameter("sitename");
String lc_findSiteName="";
List<Group> lo_siteObj=groupLocalService.getGroups(0, groupLocalService.getGroupsCount());
// List<Group>
lo_siteObj=GroupLocalServiceUtil.getGroups(0,
GroupLocalServiceUtil.getGroupsCount());
for(int k=0;k<lo_siteObj.size();k++)
{
if(lc_siteName.equals(lo_siteObj.get(k).getName()))
{
lc_findSiteName=lo_siteObj.get(k).getName();
}
}
//String lc_commonValue=po_actionRequest.getParameter("commonvalue");
//long ln_liveGroupId =
Long.parseLong(po_actionRequest.getParameter("liveGroupId"));
long ln_companyId=Long.parseLong(po_actionRequest.getParameter("companyid"));
String lc_languageId=po_actionRequest.getParameter("languageid");
String lc_discription=po_actionRequest.getParameter("discription");
int ln_type = ParamUtil.getInteger(po_actionRequest, "type");
String lc_friendlyURL = ParamUtil.getString(po_actionRequest, "friendlyURL");
ServiceContext lo_serviceContext =
ServiceContextFactory.getInstance(Group.class.getName(), po_actionRequest);
//long ln_privateLayoutSetPrototypeId
= ParamUtil.getLong(po_actionRequest, "privateLayoutSetPrototypeId");
long ln_publicLayoutSetPrototypeId = ParamUtil.getLong(po_actionRequest, "publicLayoutSetPrototypeId");
//ServiceContext lo_serviceContexta
= new ServiceContext();
Group lo_liveGroups = null;
List<LayoutSetPrototype> lo_layoutSetPrototypes =
LayoutSetPrototypeServiceUtil.search(ln_companyId, Boolean.TRUE, null);
String uuid=null;
for (LayoutSetPrototype curLayoutSetPrototype : lo_layoutSetPrototypes)
{
String name=HtmlUtil.escape(curLayoutSetPrototype.getName(lc_languageId));
uuid= curLayoutSetPrototype.getUuid();
name="";
}
if(!uuid.equals(""))
{
if(lc_findSiteName.equals(""))
{
lo_liveGroups = GroupServiceUtil.addGroup(ln_publicLayoutSetPrototypeId, ln_publicLayoutSetPrototypeId, lc_siteName,lc_discription, 1, false, ln_type, lc_friendlyURL, true, true ,lo_serviceContext);
System.out.println("liveGroups"+lo_liveGroups);
Group groupobj=groupLocalService.fetchGroup(ln_companyId, lc_siteName);
long groupid=groupobj.getGroupId();
System.out.println("Site is
creates"+lo_liveGroups.getCreatorUserUuid() );
LayoutSet layoutsets=layoutSetLocalService.getLayoutSet(groupid,false);
layoutsets.setLayoutSetId(layoutsets.getLayoutSetId());
layoutsets.setGroupId(layoutsets.getGroupId());
layoutsets.setCompanyId(layoutsets.getCompanyId());
layoutsets.setCreateDate(layoutsets.getCreateDate());
layoutsets.setModifiedDate(layoutsets.getModifiedDate());
layoutsets.setPrivateLayout(layoutsets.getPrivateLayout());
layoutsets.setLogoId(layoutsets.getLogoId());
layoutsets.setThemeId(layoutsets.getThemeId());
layoutsets.setColorSchemeId(layoutsets.getColorSchemeId());
layoutsets.setCss(layoutsets.getCss());
layoutsets.setPageCount(1);
layoutsets.setSettings(layoutsets.getSettings());
layoutsets.setLayoutSetPrototypeUuid(uuid);
layoutsets.setLayoutSetPrototypeLinkEnabled(true);
layoutsets = layoutSetLocalService.updateLayoutSet(layoutsets);
boolean privateLayout = ParamUtil.getBoolean(po_actionRequest, "privateLayout");
long parentLayoutId = ParamUtil.getLong(po_actionRequest, "parentLayoutId");
String name1 = ParamUtil.getString(po_actionRequest, "name", "home");
String title = StringPool.BLANK;
String description = StringPool.BLANK;
boolean hidden = false;
String friendlyURL1 = StringPool.BLANK;
ServiceContext serviceContext1 =
ServiceContextFactory.getInstance(po_actionRequest);
LayoutServiceUtil.addLayout(groupid, false ,parentLayoutId ,name1 ,title ,description ,LayoutConstants.TYPE_PORTLET ,false ,friendlyURL1,lo_serviceContext);
po_actionResponse.setRenderParameter("siteId", ""+groupobj.getGroupId());
po_actionResponse.setRenderParameter("siteName", lc_siteName);
po_actionResponse.setRenderParameter("action", "test");
}
}
}
catch (SystemException e) {
e.printStackTrace();
}
}
Creating
SiteForm:
After
creating form keeping that site id and site name we will create a from like
which site need which jsp pages.in the form of Yes or No.
View.jsp:
<%@ include file="init.jsp" %>
<%@page import="com.liferay.portal.kernel.portlet.LiferayPortletMode"%>
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>
<%String sitename=request.getParameter("siteName");
String siteId=request.getParameter("siteId");
System.out.println("sitename :
"+siteId);
%>
<portlet:actionURL var="siteFromURL">
<portlet:param name="action"
value="siteFormAction"/>
</portlet:actionURL>
<portlet:renderURL var="Sucess">
<portlet:param name="action"
value="Sucess"/>
</portlet:renderURL>
<aui:form action="<%=siteFromURL %>"
method="post">
<aui:input name="siteId"
value="<%=siteId %>" label="Site
Id" readonly="true"></aui:input>
<aui:input name="sitename"
value="<%=sitename %>" label="Site
Name" readonly="true"></aui:input>
<aui:select name="screen1"
placeholder="Select Screen 1" label="Screen1">
<aui:option value="YES">YES</aui:option>
<aui:option value="NO">NO</aui:option>
</aui:select>
<aui:select name="screen2"
placeholder="Select Screen 2" label="Screen2">
<aui:option value="YES">YES</aui:option>
<aui:option value="NO">NO</aui:option>
</aui:select>
<aui:select name="screen3"
placeholder="Select Screen 3" label="Screen3">
<aui:option value="YES">YES</aui:option>
<aui:option value="NO">NO</aui:option>
</aui:select>
<aui:select name="screen4"
placeholder="Select Screen 4" label="Screen4">
<aui:option value="YES">YES</aui:option>
<aui:option value="NO">NO</aui:option>
</aui:select>
<aui:select name="screen5"
placeholder="Select Screen 5" label="Screen5">
<aui:option value="YES">YES</aui:option>
<aui:option value="NO">NO</aui:option>
</aui:select>
<aui:select name="screen6"
placeholder="Select Screen 6" label="Screen6">
<aui:option value="YES">YES</aui:option>
<aui:option value="NO">NO</aui:option>
</aui:select>
<aui:select name="screen7"
placeholder="Select Screen 7" label="Screen7">
<aui:option value="YES">YES</aui:option>
<aui:option value="NO">NO</aui:option>
</aui:select>
<aui:select name="screen8"
placeholder="Select Screen 8" label="Screen8">
<aui:option value="YES">YES</aui:option>
<aui:option value="NO">NO</aui:option>
</aui:select>
<aui:select name="screen9"
placeholder="Select Screen 9" label="Screen9">
<aui:option value="YES">YES</aui:option>
<aui:option value="NO">NO</aui:option>
</aui:select>
<aui:select name="screen10"
placeholder="Select Screen 10" label="Screen10">
<aui:option value="YES">YES</aui:option>
<aui:option value="NO">NO</aui:option>
</aui:select>
<aui:button type="submit"
value="Create Site From" ></aui:button>
</aui:form>
Contoller:
@ActionMapping(params= "action=siteFormAction")
public void
siteFormAction(ActionRequest actionRequest,ActionResponse actionResponse){
/*Service tracker
calling method*/
st =new ServiceTrackerUtil(this);
st.open();
counter = new
CounterServiceTracker(this);
counter.open();
CounterLocalService
counterLocalService = counter.getService();
SiteFormLocalService
stieFormLocalService =st.getService();
String
siteId = ParamUtil.getString(actionRequest, "siteId");
String
sitename = ParamUtil.getString(actionRequest, "sitename");
String
screen1 = ParamUtil.getString(actionRequest, "screen1");
String
screen2 = ParamUtil.getString(actionRequest, "screen2");
String
screen3 = ParamUtil.getString(actionRequest, "screen3");
String
screen4 = ParamUtil.getString(actionRequest, "screen4");
String
screen5 = ParamUtil.getString(actionRequest, "screen5");
String
screen6 = ParamUtil.getString(actionRequest, "screen6");
String
screen7 = ParamUtil.getString(actionRequest, "screen7");
String
screen8 = ParamUtil.getString(actionRequest, "screen8");
String
screen9 = ParamUtil.getString(actionRequest, "screen9");
String
screen10 = ParamUtil.getString(actionRequest, "screen10");
try {
}
catch (Exception e) {
e.printStackTrace();
}
ThemeDisplay td = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
long siteFormId;
siteFormId = counterLocalService.increment();
//siteFormId =
CounterLocalServiceUtil.increment();
// SiteForm
siteFrom= SiteFormLocalServiceUtil.createSiteForm(siteFormId);
SiteForm siteFrom = stieFormLocalService.createSiteForm(siteFormId);
siteFrom.setSiteId(Long.parseLong(siteId));
siteFrom.setSiteName(sitename);
siteFrom.setScreen1(screen1);
siteFrom.setScreen2(screen2);
siteFrom.setScreen3(screen3);
siteFrom.setScreen4(screen4);
siteFrom.setScreen5(screen5);
siteFrom.setScreen6(screen6);
siteFrom.setScreen7(screen7);
siteFrom.setScreen8(screen8);
siteFrom.setScreen9(screen9);
siteFrom.setScreen10(screen10);
siteFrom.setCreatedBy(td.getUserId());
siteFrom.setModifiedBy(td.getUserId());
siteFrom.setCreateDate(new Date());
siteFrom.setModifiedDate(new Date());
stieFormLocalService.addSiteForm(siteFrom);
//SiteFormLocalServiceUtil.addSiteForm(siteFrom);
actionResponse.setRenderParameter("siteName", sitename);
actionResponse.setRenderParameter("action", "Sucess");
}
After
creating site and site form we need to save the data in the database in liferay
spring mvc it is recommended that not to LocalServiceUtill class rather than
that we can use Service Tracker concept.
Service Tracker:
To implement a service
tracker
To
minimize the service tracker code, use a type-safe wrapper class that extends
org.osgi.util.tracker.ServiceTracker. Your ServiceTracker takes two generic type parameters: the type of service being
tracked, and the type of object being produced. In the present use case, both
types are the same.
Create Separate class for each service tracker.
public class ServiceTrackerUtil extends
ServiceTracker<SiteFormLocalService,
SiteFormLocalService> {
public
ServiceTrackerUtil(Object context) {
super(FrameworkUtil.getBundle(context.getClass()).getBundleContext(),
SiteFormLocalService.class, null);
}
}
In controller class create init method
inside that create an object of service tracker and open the tracker as shown
below.
/*Service Tracker Objects*/
public static ServiceTrackerUtil st=null;
public static
CounterServiceTracker counter = null;
public static GroupServiceTracker group = null;
public static
LayoutSetServiceTracker layoutSet = null;
@PostConstruct
private void init() {
System.out.println("Inside the
init method");
st =new ServiceTrackerUtil(this);
st.open();
counter = new
CounterServiceTracker(this);
counter.open();
group = new GroupServiceTracker(this);
group.open();
layoutSet = new
LayoutSetServiceTracker(this);
layoutSet.open();
}
After that to call service tracker in method we need
to create object again and open after that we can get the service
st =new ServiceTrackerUtil(this);
st.open();
counter = new
CounterServiceTracker(this);
counter.open();
CounterLocalService
counterLocalService = counter.getService();
SiteFormLocalService
stieFormLocalService =st.getService();
SiteForm siteFrom = stieFormLocalService.createSiteForm(siteFormId);
After getting all the service class we need to close
all the resouses using destroy method.
@PreDestroy
public void destroy(){
st.close();
counter.close();
group.close();
layoutSet.close();
}

No comments:
Post a Comment