那今天来写根据官网实现Add Entry。
上一篇文章:根据liferay官网写guestbook例子--Add Entry(一)
第一步:新建一个edit_entry.jsp的jsp页面。
1.然后复制view.jsp页面的前三行
2.在Snippets中找到Portlet Taglib,然后拖拽renderURL到页面当中
var填viewURL
3.在<portlet:renderURL var="viewURL">和</portlet:renderURL>之间拖拽param,
name
填mvcPath,value填/html/guestbook/view.jsp
4.拖拽actionURL到</portlet:renderURL>下面,name填addEntry,var填addEntryURl
5.在</aui:fieldset>下面拖拽button-row,不填写任何信息。
6.在<aui:button-row>和</aui:button-row>之间拖拽button,type填写submit
7.在拖一个button,onClick填<%= viewURL.toString() %>,type填cancel
做好的页面代码如下:
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> <%@ taglib uri="http://alloy.liferay.com/tld/aui" prefix="aui" %> <portlet:defineObjects /> <portlet:renderURL var="viewURL"> <portlet:param name="mvcPath" value="/html/guestbook/view.jsp"></portlet:param> </portlet:renderURL> <portlet:actionURL name="addEntry" var="addEntryURL"></portlet:actionURL> <aui:form action="<%= addEntryURL %>" name="<portlet:namespace />fm"> <aui:fieldset> <aui:input name="name"></aui:input> <aui:input name="message"></aui:input> </aui:fieldset> <aui:button-row> <aui:button type="submit"></aui:button> <aui:button type="cancel" onClick="<%= viewURL.toString() %>"></aui:button> </aui:button-row> </aui:form>
第二步:打开GuestbookPortlet.java
在public class GuestbookPortlet extends MVCPortlet内添加如下代码:
public void addEntry(ActionRequest request, ActionResponse response) { try { PortletPreferences prefs = request.getPreferences(); String[] guestbookEntries = prefs.getValues("guestbook-entries", new String[1]); ArrayList<String> entries = new ArrayList<String>(); if (guestbookEntries != null) { entries = new ArrayList<String>(Arrays.asList(prefs.getValues( "guestbook-entries", new String[1]))); } String userName = ParamUtil.getString(request, "name"); String message = ParamUtil.getString(request, "message"); String entry = userName + "^" + message; entries.add(entry); String[] array = entries.toArray(new String[entries.size()]); prefs.setValues("guestbook-entries", array); try { prefs.store(); } catch (IOException ex) { Logger.getLogger(GuestbookPortlet.class.getName()).log( Level.SEVERE, null, ex); } catch (ValidatorException ex) { Logger.getLogger(GuestbookPortlet.class.getName()).log( Level.SEVERE, null, ex); } } catch (ReadOnlyException ex) { Logger.getLogger(GuestbookPortlet.class.getName()).log( Level.SEVERE, null, ex); } }
第三步:新建package,com.liferay.docs.guestbook.model
并建一个Entry.java,在里面添加如下代码:
package com.liferay.docs.guestbook.model; public class Entry { private String name; private String message; public Entry() { this.name = null; this.message = null; } public Entry (String name, String message) { setName(name); setMessage(message); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
第四步:打开GuestbookPortlet.java,添加两个方法
代码如下:
第一个:
@Override public void render (RenderRequest renderRequest, RenderResponse renderResponse) throws PortletException, IOException { PortletPreferences prefs = renderRequest.getPreferences(); String[] guestbookEntries = prefs.getValues("guestbook-entries", new String[1]); if (guestbookEntries != null) { List<Entry> entries = parseEntries(guestbookEntries); renderRequest.setAttribute("entries", entries); } super.render(renderRequest, renderResponse); }
第二个:
private List<Entry> parseEntries (String[] guestbookEntries) { ArrayList<Entry> entries = new ArrayList(); for (String entry : guestbookEntries) { String[] parts = entry.split("\\^", 2); Entry gbEntry = new Entry(parts[0], parts[1]); entries.add(gbEntry); } return entries; }
第五步:打开view.jsp页面
1.找到aglib Imports ,然后拖拽Liferay UI Taglib Import到页面
2.在<portlet:defineObjects />下面添加如下代码:
<jsp:useBean id="entries" class="java.util.ArrayList" scope="request"/>
3.在<aui:button-row cssClass="guestbook-buttons">上面拖拽 Liferay UI Search Container下的Model Search Container
4.点击Browse,然后输入Entry,选择com.liferay.docs.guestbook.model.Entry这一行的
5.选择message和name,把aEntry改成entry,点击Finish
6.修改<liferay-ui:search-container-results>里的内容为:
<liferay-ui:search-container-results results="<%= entries %>" />
新的view.jsp页面代码如下:
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> <%@ taglib uri="http://alloy.liferay.com/tld/aui" prefix="aui" %> <%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %> <portlet:defineObjects /> <jsp:useBean id="entries" class="java.util.ArrayList" scope="request"/> <liferay-ui:search-container> <liferay-ui:search-container-results results="<%= entries %>" /> <liferay-ui:search-container-row className="com.liferay.docs.guestbook.model.Entry" modelVar="entry" > <liferay-ui:search-container-column-text property="message" /> <liferay-ui:search-container-column-text property="name" /> </liferay-ui:search-container-row> <liferay-ui:search-iterator /> </liferay-ui:search-container> <aui:button-row cssClass="guestbook-buttons"> <portlet:renderURL var="addEntryURL"> <portlet:param name="mvcPath" value="/html/guestbook/edit_entry.jsp"> </portlet:param> </portlet:renderURL> <aui:button onClick="<%= addEntryURL.toString() %>" value="Add Entry"> </aui:button> </aui:button-row>在GuestbookPortlet.java中还有许多的错误,下一篇继续。