Java tutorial
=========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