XXController.java Source code

Java tutorial

Introduction

Here is the source code for XXController.java

Source

=========Liferay Portal 6.2 Community Edition GA1 
Tomcat7  bundled with tomcat
Liferay IDE-2.1.1 elipse?
? plugins SDK  portal javadoc


??? liferay-portal-6.2.0-ce-ga1\portal-setup-wizard.properties

HSQL ?, ? http://localhost:8080/ ? ?? liferay-portal-6.2-ce-ga2/portal-setup-wizard.properties 
liferay-portal-6.2.0-ce-ga1\tomcat-7.0.42\lib   mysql-jdbc.jar
liferay-portal-6.2.0-ce-ga1\tomcat-7.0.42\webapps\ROOT\WEB-INF\classes   portal-ext.properties
 180  ?
# MySQL
jdbc.default.driverClassName=com.mysql.jdbc.Driver
jdbc.default.url=jdbc:mysql://localhost3306/liferay62?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
jdbc.default.username=liferay62
jdbc.default.password=liferay62
# Oracle
#jdbc.default.driverClassName=oracle.jdbc.driver.OracleDriver
#jdbc.default.url=jdbc:oracle:thin:@localhost:1521:xe
#jdbc.default.username=liferay62
#jdbc.default.password=liferay62


jdbc.default.maxIdleTime=600
jdbc.default.maxPoolSize=10
jdbc.default.minPoolSize=2
jdbc.default.jndi.name=jdbc/LiferayPool

liferay-portal-6.2-ce-ga2\tomcat-7.0.42\webapps\?portlet,?  welcome-theme ,calendar-portlet  ,opensocial-portlet

liferay  portlet  ?? ant D:\Program\liferay-plugins-sdk-6.2.0\portlets\build.xml maven liferay-plugins-sdk-6.2.0\.ivy\ 

cd D:\Program\liferay-plugins-sdk-6.2.0\portlets  (eclipseliferay)
create.bat my-greeting2 "My Greeting2"  ANT,?my-greeting2-portlet(?)

ant deploy  Maven?jsf.jarbridge.jar.ivy\ ,
???liferay-plugins-sdk-6.2.0\ivy-settings.xml chainjboss-nexus http://oss.sonatype.org/content/repositories/releases/ ,??ivy.xml
http://oss.sonatype.org/content/repositories/snapshots/ ?-SNAPSHOT
(?build.xml,ivy.xml,weblogic.xml,faces-confgi.xml,web.xml,portlet.xml)

liferay-portal-6.2.0-ce-ga1\tomcat-7.0.42\lib\ext   portlet2.0.jarMySQLjar
liferay-portal-6.2.0-ce-ga1\tomcat-7.0.42\webapps?ROOT,?marketplace-portlet 

eclipseliferay-portal-6.2.0-ce-ga1\tomcat-7.0.42\conf\Catalina\localhostXML

6.2?server?6.1(?6.1server6.2server),?6.1Log4j,

6.2 ? Add(+)->Applications-> My Sample (liferay-display.xml?) 

import com.liferay.portal.kernel.util.MapUtil;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.PortletURLFactoryUtil;

import org.springframework.web.portlet.bind.annotation.RenderMapping;

@Controller
@RequestMapping("view")
class XXController
{
   @RenderMapping  //@RequestMapping("view"),??
   public String xxx(RenderRequest renderRequest, RenderResponse renderResponse, Model model)//Render
   {
      HttpServletRequest req1=PortalUtil.getHttpServletRequest(renderRequest);
      HttpServletRequest req2=PortalUtil.getOriginalServletRequest(req1);
      req2.getParameter("userName");
            
      return "viewName";
   }
   @RenderMapping(params = "addUserRender=toAddUserPage")
   public String toAddUserPage(RenderRequest renderRequest, RenderResponse renderResponse) {
      return "add";
   }
   
   @ActionMapping(params = "addUserAction=addUser")
   public void yyy(ActionRequest actionRequest, ActionResponse actionResponse, Model model,   //Action???
      @ModelAttribute("userForm") User userForm) 
   {
       
      actionRequest.setAttribute("user", user);
      actionResponse.sendRedirect(genStr(actionRequest));
       
   }
   
   public String genStr(PortletRequest portletRequest)
    {
      ThemeDisplay themeDisplay = (ThemeDisplay) portletRequest.getAttribute(WebKeys.THEME_DISPLAY);
      String portletName = PortalUtil.getPortletId(portletRequest);
      long plid = themeDisplay.getPlid();
      // Create and form a new request by the parameters.
      PortletURL aPortletURL = PortletURLFactoryUtil.create(portletRequest,portletName, plid, PortletRequest.RENDER_PHASE);
      Map<String, String[]> params = new LinkedHashMap<String, String[]>();
      // RenderMapping request, forward the add.jsp page.
      params.put("addUserRender", new String[] { "toAddUserPage" });
      MapUtil.merge(aPortletURL.getParameterMap(), params);
      aPortletURL.setParameters(params);
      return aPortletURL.toString();
   }


}
<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />


<portlet:renderURL var="addUserRender">
   <portlet:param name="addUserRender" value="toAddUserPage" />
</portlet:renderURL>
<a href="${addUserRender}">Add</a>

<portlet:actionURL var="addUserAction">
   <portlet:param name="addUserAction" value="addUser" />
</portlet:actionURL>
<form name="userForm" action="${addUserAction}" method="post">
</form>

JS 
Liferay.Portlet.refresh('#p_p_id<portlet:namespace/>'); //?Portlet

<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>searchUserPortlet</portlet-name>
      <display-name>SearchUserPortlet</display-name>
      <portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
      <init-param>
         <name>contextConfigLocation</name>
         <value>/WEB-INF/searchUserPortlet-portlet.xml</value>
      </init-param>
      <expiration-cache>0</expiration-cache>
      <supports>
         <mime-type>text/html</mime-type>
         <portlet-mode>view</portlet-mode>
      </supports>
      <portlet-info>
         <title>SearchUserPortlet Demo</title>  <!-- ?,portlet -->
         <short-title>SearchUserPortlet Demo</short-title>
         <keywords>SearchUserPortlet Demo</keywords>
      </portlet-info>
   </portlet>
</portlet-app>


---6.1
eclipse??
---liferay-display.xml
<?xml version="1.0"?>
<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 6.1.0//EN" "http://www.liferay.com/dtd/liferay-display_6_1_0.dtd">
<display>
   <category name="SearchUserResultPortlet"> <!-- ??,?-->
      <portlet id="searchUserResultPortlet" /> <!--  portlet.xml <portlet-name>searchUserResultPortlet</portlet-name> ?-->
   </category>
</display>


----liferay-portlet.xml
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.1.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_1_0.dtd">
<liferay-portlet-app>
   <portlet>
      <portlet-name>searchUserResultPortlet</portlet-name><!-- ? portlet.xml<portlet-name>searchUserPortlet</portlet-name>  -->
      <icon>/images/icon.png</icon>
      <instanceable>true</instanceable>  <!-- ,?portlet -->
      <header-portlet-css>/css/main.css</header-portlet-css>
      <header-portlet-javascript>/js/jquery-1.7.2.min.js</header-portlet-javascript>
   </portlet>
</liferay-portlet-app>

6.2
<liferay-portlet-app>
   <portlet>
      <portlet-name>greeting</portlet-name>
      <icon>/icon.png</icon>
      <requires-namespaced-parameters>false</requires-namespaced-parameters>
      <ajaxable>false</ajaxable>
      <header-portlet-css>/css/main.css</header-portlet-css>
      <css-class-wrapper>greeting-portlet</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>

----liferay-plugin-package.properties
name=searchUserResultPortlet
module-group-id=liferay
module-incremental-version=1
tags=
short-description=
long-description=
change-log=
page-url=http://www.liferay.com
author=Liferay, Inc.
licenses=LGPL
liferay-versions=6.1.0+
-----6.2?
portal-dependency-jars=commons-beanutils.jar,commons-collections.jar,commons-digester.jar,commons-fileupload.jar,commons-io.jar,commons-lang.jar
speed-filters-enabled=false


6.2 ?liferay-hook.xml
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.2.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_2_0.dtd">
<hook>
   <language-properties>Language_en_US.properties</language-properties>
</hook>
 6.2?JSFportlet.xml
<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>greeting</portlet-name>
      <display-name>Greeting</display-name>
      <portlet-class>javax.portlet.faces.GenericFacesPortlet</portlet-class>
      <init-param>
         <name>javax.portlet.faces.defaultViewId.view</name>
         <value>/views/view.xhtml</value>
      </init-param>
      <expiration-cache>0</expiration-cache>
      <supports>
         <mime-type>text/html</mime-type>
      </supports>
      <portlet-info>
         <title>Greeting</title>
         <short-title>Greeting</short-title>
         <keywords>Greeting</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>

6.2?JSFxhtml
<f:view
   xmlns="http://www.w3.org/1999/xhtml"
   xmlns:c="http://java.sun.com/jsp/jstl/core"
   xmlns:f="http://java.sun.com/jsf/core"
   xmlns:h="http://java.sun.com/jsf/html"
   xmlns:ui="http://java.sun.com/jsf/facelets"
>
   <h:head />
   <h:body>
      <h:outputText value="#{i18n['greeting-hello-world']}" /> <!-- ?i18n -->
   </h:body>
</f:view>
6.2? faces-config.xml
<lifecycle>
      <phase-listener>com.liferay.faces.util.lifecycle.DebugPhaseListener</phase-listener>
</lifecycle>
   
?HTMLJS,debug


Velocity ?? 
$portletDisplay =    com.liferay.portal.theme.PortletDisplay
$htmlUtil =       com.liferay.portal.kernel.util.HtmlUtil
$portletURLFactory= com.liferay.portlet.com.liferay.portlet.PortletURLFactory 
$company=         com.liferay.portal.model.Company 
$user=            com.liferay.portal.model.Group 
$request=         javax.servlet.http.HttpServletRequest
$page
$writer
$theme
?  #language


6.1logpublic pagelog
Site Template 
Page template ?,?
Site TemplatePage,?Page Template,?PageTemplate,??,pagepage template

Page TemplateSite Template?portlet
Template??,?Template???


Site Template ?Site,?Page
User??Page

theme _diff?,_diff/css/custom.css,_diff/templates/portal_normal.vm


liferay  layout ? liferay-plugins-sdk-6.2.0\layouttpl
liferay  theme ? liferay-plugins-sdk-6.2.0\themes
 
-- key,
---liferay-hook.xml
<?xml version="1.0"?>
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.2.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_2_0.dtd">
<hook>
   <language-properties>Language_en_US.properties</language-properties>
</hook>
<display>
   <category name="category.mysample"> <!-- Key -->
      <portlet id="portlet62_table" />
   </category>
</display>

<portlet>
   <title>portlet62_table_title</title><!-- Key -->

classpathLanguage_en_US
portlet62_table_title=Hello Portlet62 Table!
category.mysample=my samples



Liferay6.2 ?JSPSession



?Solr ,cluster,jcr