2014年3月19日 星期三

Liferay portlet config設定~~

1.先在自己的 portlet.xml 定義config項目;

<..more...>

<init-param>
<name>view-template</name>
<value>/html/tab1.jsp</value>
</init-param>
<init-param>
<name>config-template</name>
<value>/html/configuration.jsp</value>
</init-param>


<..more...>

2.再來 liferay-portal.xml 也定義class的路徑與類別



<liferay-portlet-app>
<portlet>
<portlet-name>yourPortletName</portlet-name>
<icon>/icon.png</icon>
<configuration-action-class>
com.liferay.portal.kernel.portlet.DefaultConfigurationAction
</configuration-action-class>

<..more...>


3.開始設計你的configuration.jsp 這個頁面 會在你的portlet右上角板手圖示裡面顯示;
 以下是為了要讓使用者可以自由選擇顯示筆數
deltaSet  會在search container  的 delta = " <%=deltaSet %>"  用到;


<%@include file="/html/init.jsp"%>

<liferay-portlet:actionURL portletConfiguration="true"
var="configurationURL" />
<aui:form action="<%=configurationURL%>" method="post">
<!-- 以下是用來控制寫入的 -->
<aui:input name="<%=Constants.CMD%>" type="hidden"
value="<%=Constants.UPDATE%>" />

<aui:select label="顯示筆數"
name="preferences--deltaSet--">
<aui:option label="5" selected="<%= deltaSet == 5 %>" />
<aui:option label="10" selected="<%= deltaSet == 10 %>" />
<aui:option label="20" selected="<%= deltaSet == 20 %>" />
<aui:option label="30" selected="<%= deltaSet == 30 %>" />
<aui:option label="50" selected="<%= deltaSet == 50 %>" />
</aui:select>
<%!SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); %>
<aui:input name="abc" label="最後設定日期" disabled="true" value="<%=mdfDate2%>"/>
<aui:input name="preferences--mdfDate2--" type="hidden" value="<%=sdf.format(new Date())%>"/>

<aui:button type="submit" />
</aui:form>

name的命名規則  一定要這樣   "preference--你高興--"   不然他不認得這是preference的變數;


4. 這是init.jsp   的寫法;  這樣只要任何頁面有 include init.jsp   都可以取得 config中設定的變數
來自由使用;
preferences 所儲存的設定變數 會寫入資料庫; 不用怕重開之後會不見;

<%
PortletPreferences preferences = renderRequest.getPreferences();

String portletResource = ParamUtil.getString(request,
"portletResource");
if (Validator.isNotNull(portletResource)) {
preferences = PortletPreferencesFactoryUtil.getPortletSetup(
request, portletResource);
}

int deltaSet = GetterUtil.getInteger(preferences.getValue("deltaSet",
null));
String mdfDate2 = GetterUtil.getString(preferences.getValue("mdfDate2",
null), new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
%>

GetterUtil.getString(value, default Value );  如果第一個參數value是null  那他會以第二個參數給預設;


String title = GetterUtil.getString(xxx.getTitle(), "你高興" );
if(xxx.getTitle() == null)
title = "你高興";




更深入的了解 可以參考:
http://rritw.com/a/bianchengyuyan/C__/20130823/414769.html
http://go.rritw.com/supercharles888.blog.51cto.com/609344/1281101





















沒有留言:

張貼留言