2017年1月30日 星期一

將 JSF Composite Component 包裝成 jar 檔供其他 Web 專案使用

1.技術問題

JSF 的 composite component (複合元件) 的功能可以組合現有 UIComponent 成為新的、重複使用的元件。可以組合成的複合元件使用、驗證器、轉換器、JSF 系統事件、及 AJAX。 完成的複合元件會包含:
  • facelet: 檔案名稱為新的標籤的名稱,其內容定義標籤的屬性及組合現有的元件。
  • java class: 支援此複合元件執行所需要的 java 程式碼。
例如,可以組合 h:outputLabel, h:inputText, h:commandButton 等三個元件,再加上一個驗證器成為新的元件專門用來輸入電子郵件。
當你完成複合元件時,你可以在現有 Web 專案的 facelet 中直接使用此元件的標籤。但是,如何將此複合元件變成一個獨立的程式庫供其他的 Web 專案使用呢?

2017年1月27日 星期五

h:inputxxx 標籤所支援的 ajax behavior event 有哪些?


技術問題:

jsf 提供 f:ajax 標籤讓元件具備 Ajax 處理的能力。f:ajax 的 event 屬性要指定與攔截的客戶端的事件[1]。若沒有指定,會使用預設的事件。

h:inputText, h:inputTextArea, h:inputSecret 標籤提供哪些 ajax 事件行為呢?

參考答案:

h:inputText, h:inputTextArea, h:inputSecret 三個標籤的元件皆是屬於 javax.faces.component.EditableValueHolder 類別的元件。這類的元件的預設 ajax 事件為 valueChange。詳細的事件如下:

2017年1月2日 星期一

如何在 Weblogic 中設定 Java DB 的 DataSource

技術問題:

已有一個 Java DB,其路徑為 D:\derby\TicketCareDB。如何在 Weblogic Server 下新增一個此 Java DB 的 Data Source,使得  Weblogic 啟動時自動啟動此 Java DB?

做法:
1. 開啟 Weblogic 的 Admin Console.
2. Navigate to (youDomain) Services > Data Sources > (B)New 新增一個 Generic Data Source
3. 設定相關的欄位,其中 Database Name 欄位要設定為 Java DB 的路徑(ie. D:\derby\TicketCareDB )

更多細節,請參考 [1].


Reference:
[1]  https://blakboard.wordpress.com/2012/11/27/set-up-apache-derby-jdbc-data-source-in-oracle-weblogic-application-server/

PrimeFaces 處理 Ajax request 過程中所產生的 callbacks 及 events

在執行 Ajax Request 的前後, 我們可以有機會執行 Javascript 完成瀏覽器上的操作。過程中的一連串的過程如下:

  • User clicks button in client
  • onclick JavaScript code is executed
  • JavaScript prepares ajax request based on process and current HTML DOM tree
  • onstart JavaScript code is executed
  • JavaScript sends ajax request from client to server
  • JSF retrieves ajax request
  • JSF processes the request lifecycle on JSF component tree based on process
  • actionListener JSF backing bean method is executed
  • action JSF backing bean method is executed
  • JSF prepares ajax response based on update and current JSF component tree
  • JSF sends ajax response from server to client
  • JavaScript retrieves ajax response
    • if HTTP response status is 200, onsuccess JavaScript code is executed
    • else if HTTP response status is 500, onerror JavaScript code is executed
  • JavaScript performs update based on ajax response and current HTML DOM tree
  • oncomplete JavaScript code is executed

2016年12月28日 星期三

Sale Order 到 AR 的操作流程


手動 Sales Order 到  AR 的操作流程 https://blogs.oracle.com/ptian/entry/oracle_ebs%E8%AE%A2%E5%8D%95%E7%9A%84%E6%B5%81%E7%A8%8B_order_ar

手動執行 Ship Confirm 的操作可參考: http://oraclemasterminds.blogspot.tw/2014/11/manual-ship-confirm-process-in-order.html

2016年11月21日 星期一

Overlay Edit 的實現 - JSF

UI樣式

在表單或者表格上,顯示 Overlay Dialog,讓使用者輸入新的值,或是進行確認的動作。

Instance 1

1. 點選表格上的 Edit 按鈕,將該列的欄位值預設顯示在對話框中。 2. 完成編輯後,使用者按下確認按鈕,系統顯示更新後的值。

Facelets and Backing Beans

2016年11月10日 星期四

PrintWirter 和 FileWriter 有什麽不同?


PrintWriter 用來輸出格式化的文字到文字輸出串流中,提供 println, printf 或 format 方法來輸出格式化的文字。 Class PrintWriter API

Print Writer 提供 auto-flush 的功能。所以此兩個參數的建構子 PrintWriter(Writer out, boolean autoFlush)建立具備 auto-flush 的 PrintWriter.

FileWriter 是便利類別(Convenience Class), 幫我們將文字寫入檔案。此方法使用預設的字元編碼(default character encoding)及預設的位元緩衝區大小。Class FileWriter API