Liferay提供了Staging機制讓我們可以很輕鬆地將內容同步到Production Server,但是如果是客製化Portlet及Entity就得自行處理這部分的程式撰寫。
在Liferay 6.1版本中提供了PortletDataHandler這個類別讓我們可以在其中撰寫我們所需要匯入的程式邏輯,基本上是以匯出/匯入Lar檔案的方式再進行擴充,而在Liferay 6.2版本又多衍伸出StagedModelHandler這個類別,讓我們可以針對各個要匯入的資料分門別類易於管理。
附件為Fansysoft-Lar-Simple.portlet,包含一個News資料的Crud以及自訂權限Model設定,在這個基礎之上加入Staging同步功能客製化:
* 首先必須修改Service.xml,一個要做Staging的Entity需要設定uuid為true,讓liferay可以讓我們產生Uuid,另外還需要companyId、createDate以及modifiedDate,group也可選擇性添加,如下參考:
<?xml version="1.0" encoding="UTF-8"?>

squall75726 發表在 痞客邦 留言(1) 人氣()


Liferay的tag<liferay-ui:input-localized name="" xml="" type=""/>可以用來做多國語言的輸入textbox或是富文本編輯器。
其中type="editor"便可以將text轉換成編輯器的模式,但是是簡易版的編輯器,若是使用hook可以將這個編輯器改成標準版編輯器,但是尚未確定是否會有任何問題。
一般custom portlet的使用方式:
Service.xml要先設定我們要用來存放多國語言資料的欄位,例如:
<column name="description" type="String" localized="true"/>

squall75726 發表在 痞客邦 留言(0) 人氣()

製作密碼驗證機制時,常會需要針對密碼進行加密之後,再存入資料庫,本次於某專案中有實做到密碼加/解密機制,所使用的加密格式為AES 128位元加密,並且將加密過後的資料以Base64的格式編譯為字串,最後存入資料庫欄位中,如下所述;

1. 本次使用的加密金鑰為自行撰打組成,由於使用的為128位元加密,金鑰格式需要有16bytes,可英數組合且不建議使用特殊符號,此金鑰存入資料庫某欄位,直接以Connection的方式讀取;

2. 取得金鑰字串之後,便可進行密碼的加解密工作,如下;

Encrypt及Decrypt分別為加解密方法,傳入的參數為金鑰SecretKey物件、以及要加密的字串或是解密的byte陣列,需要注意的是IvParameterSpec為加/解密時要用到的參數,型別為byte陣列,同樣為16個字元的英數混和格式字串轉byte而來,而且加解密實用的IV值要一樣否則無法執行。

另外包含了將金鑰字串轉換為SecretKey物件的方法,轉換後用以加/解密。

squall75726 發表在 痞客邦 留言(2) 人氣()

001json

Liferay的Notification通知是一個很好用的功能,不但在我們自行開發Portlet時可以引用,配合Json Web Service API還可以達到與其他系統串接的功能,以下紀錄;

一、 實作UserNotificationEventHandler - 自行開發Portlet時可直接使用

1. 首先創一個Portlet project,在這裡我們可取名為Notification-Demo-portlet

2. 創立一個package,並且將我們要用的MVC Portlet Java也一併創建進去如下;

UserNotificationPortlet:

squall75726 發表在 痞客邦 留言(0) 人氣()

j1

最近在研究使用Java呼叫DLL,由於Java與.NET都是在各自的VM上執行的程式,因此要互相調用對方的api有點困難,查詢到到許多方案例如JNBridge、Javonet等套件都能夠達到此需求,可惜這些套件都需要付授權費用,參考如下; 

jnbridge

javonet

不過仍然有開源版的套件可使用,這次使用的便是jni4net:

jni4net

squall75726 發表在 痞客邦 留言(0) 人氣()

紀錄一下如何使用Javascript來驗證身分證字號及居留証字號

另外護照號碼規則似乎不明瞭,主要驗證護照號碼是否大於20個字元。

squall75726 發表在 痞客邦 留言(3) 人氣()

custom1

在Liferay中進行自定義Sql查詢的方式,除了上一篇的直接使用finderImpl並且定義Sql字串以外,我們還可以使用custom-sql。

使用custom的好處在於我們可以將查詢字串寫在一個xml中,查詢時將關鍵字帶入,其功能就跟finder一樣。

以liferay的user資料表來說,如果我今天想要用userId跟screenName來查詢,大致如下;

首先在src路徑底下新增custom-sql資料夾,並且新增一個default.xml,內容如下;

內容是單純的查詢語句,如果說有多種不同資料庫的可能性,那就新增多個對應的xml,並且在default.xml內對應;

squall75726 發表在 痞客邦 留言(2) 人氣()

開發Liferay時,除了custom-sql可以為我們達成join多張表的查詢之外,其實也可以依照需求利用dynamic query的子查詢查到所需資料,

以下我主要查詢的table為AssetsEntry,配合與其有關連的JournalArticleResource及JournalArticle兩張表做子查詢;

使用以上的作法便可再只需要子查詢時,不需要透過join的方式就可達到需求,若要使用join方式則還是需使用custom-sql較為清楚。

http://www.liferay.com/zh/community/forums/-/message_boards/message/1817322 http://www.liferay.com/zh/community/forums/-/message_boards/message/6729269  

squall75726 發表在 痞客邦 留言(0) 人氣()

timeout1

javascript有兩個好用的方法,分別為setTimeout()與setInterval(),此兩種方法都是設定秒數並且在時間到之後,執行某些method

唯一的不同在於setTimeout()只會執行一次,而setInterval()則會重複執行,必須使用clearInterval()將其清除。

分別有以下兩種撰寫方法;

setTimeout()的撰寫方式與setInterval()相同。

只要善用setInterval()我們便可以寫出一個簡單的倒數計時器,在這裡我配合jqwidget的notification功能來撰寫一個簡單的sessiontimeout計時器,

squall75726 發表在 痞客邦 留言(4) 人氣()

page1

最近終於成功實作了Jqwidget grid + Mybatis pageHelper進行的資料分頁顯示,方法並不困難;

一般來說,當遇到非常龐大的資料量的時候。前端data table的資料顯示都會進行分頁取值,也就是傳遞目前所在頁面、畫面顯示筆數等等資訊到後端,

再由後端進行sql的查詢,一次只查詢固定範圍的資料以減輕系統負擔及提升效能。

本次我所使用的前端網頁元件是Jqwidget grid,使用json的資料格式來傳遞資訊,而Jqwidget 的dataadapter有為我們傳遞分頁資訊;

首先是資料的source取得格式:

squall75726 發表在 痞客邦 留言(0) 人氣()

maven1

Maven跟一般的web project比較起來,最大的不同就在於不需要手動下載所需要的jar檔,

而只需要在pom.xml定義後,Maven便會自動幫我們下載所需的檔案。

Maven的jar檔案配置可在以下網站尋找;

http://mvnrepository.com/

http://search.maven.org/

squall75726 發表在 痞客邦 留言(0) 人氣()

0001

花了許多時間,初步完成了mybatis + spring的整合,準備工作如下;

使用版本: Spring 4.0.2 RELEASE、Mybatis 3.2.6、Sql Server jdbc 4.0、mybatis-spring 1.2.2

一、新創一個maven webapp project,這裡取名為MybatisDemo,package設定為com.test.mybatis,記得Archetype要設定webapp如下;

完成之後還要記得更改java compiler改成現在用的版本,build path 的 system library也要修改。

接著便修改pom.xml,這裡除了引用spring、mybatis以及spring-mybatis的相關jar檔案之外,還要有javaee-api、sql server驅動程式等等,詳細如下;

squall75726 發表在 痞客邦 留言(0) 人氣()

1 2 3 4
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。