2010年12月21日 星期二

file download on JSF

1.pure JSF
重點在最後加上FacesContext.getCurrentInstance().responseComplete()
Reference

2.rifaces way




Reference

3.seam way





Reference

2010年9月13日 星期一

Richfaces on Google App Engine

Live Richfaces on GAE
http://richfaces-showcase-gae.appspot.com/

Source
http://anonsvn.jboss.org/repos/richfaces/trunk/examples/richfaces-showcase/

Build and Run step
http://anonsvn.jboss.org/repos/richfaces/trunk/examples/richfaces-showcase/readme.txt

How To Configure Maven For RichFaces
http://community.jboss.org/wiki/HowToConfigureMavenForRichFaces

Jboss.org Maven Settings Example
http://community.jboss.org/wiki/MavenSettingsExample-Users
http://community.jboss.org/wiki/MavenGettingStarted-Users


Configuring a proxy
http://maven.apache.org/guides/mini/guide-proxies.html

NOTE:
1.If proxy protocol set http , the repository URL must use 'http'.
http://repository.jboss.org/nexus/content/groups/public-jboss/

2.關於readme.txt的第二點2) Publishing to Google Application Engine
執行mvn clean package -Pgae -Denforcer.skip=true之前,必須先修改pom.xml。
將org.glassfish.web的dependency拿掉,改由手動去抓該el-impl.jar,並且放到/richfaces-showcase/src/main/webapp/WEB-INF/lib底下。

3.deploy localhost

2009年5月24日 星期日

JSF on Google App Engine

目前只支援JSF 1.1,

實作元件目前相容的有Myfaces,

但是Richfaces 3.1.6不相容,

幫忙投票讓GAE支援Richfaces,here

一堆東西不能用 囧rz.

2009年4月27日 星期一

HTML EDITOR - TinyMCE

最近案子要用網頁編輯器,因此來回顧多年以前玩的TinyMCE.

需求 :中文化以及可以使用標楷體

1. download Chinese language pack

2. snapshot sample

tinyMCE.init({language : "zh",
theme_advanced_fonts : "新細明體=新細明體;標楷體=標楷體;"...});

BTW , Richfaces的rich:editor元件採用的也是TinyMCE,

現在包成元件用方便多了,clean is beauty and more ajax

2009年4月15日 星期三

Use JSTL on JSF with Facelets

  1. version JSTL 1.1
  2. namespace : xmlns:c="http://java.sun.com/jstl/core"
  3. Facelets Support : c:if , c:forEach , c:set(少用)

2007年12月12日 星期三

Reverse engineering on DB2

目標 : 使用非root權限但是有個別schema權限的account 將db dumup到別的db
  • 解法1 : PowerDesigner 12
  • 解法2 : DB2提供的玩具 EXPORT TO指令
  • 解法3 : hibernate-reverse-engineering
  • 解法4 : DB2 -> sql server - > DB2
  • 解法5 : toad for db2

2007年11月27日 星期二

weblogic 9.2 with Seam 2.0.ga

  1. Source : jboss-seam-2.0.0.GA\examples\jpa\resources-weblogic92

  2. Edit : modify web.xml from version="2.5" to version="2.4"
    weblogic 9.2不支援2.5

  3. Data Sources : examples-dataSource-demoPool , weblogic use pointbase
    (1) run PointBase Console.exe
    (2) driver : com.pointbase.jdbc.jdbcUniversalDriver
    url : jdbc:pointbase:server://localhost/demo
    user/pw : examples/examples

2007年8月23日 星期四

Seam 2.0 without JSF , RHDS release

Seam2.0之後,將把"JSF限定"拿掉,目前計畫整合ZK(zkseam.demo)和Wicket.

ZK是非常優秀的Ajax Framework,可以帶給用戶非常棒的AJAX體驗,但是架構上比起JSF還是不足,這要等待日後seam對其整合的如何.

Wicket的想法很棒,徹底把元件從網頁中拿掉,讓網頁設計師輕鬆許多,省了許多溝通上的麻煩,但是把網頁的TAG放到後端重組成自己的TAG,花費了許多額外的效率,這一點還沒上線過比較大專案,所以還不確定影響到什麼地步,改天找個案子來試試看.

期待很久的Red Hat Developer Studio終於發佈了,整合了JBossIDE和ExadelIDE並且加入Seam,可以說是JBoss最強的武器吧XD,想挑戰Rails的開發速度嗎?Try it!Seam-gen will make it come true!

Configure Richfaces3.1 with Seam2.0

英文寫的不好,看不懂請包涵XD.
Required : richfaces-ui-3.1.0-rcX-bin and jboss-seam-2.0.0.BETA1
  1. lib
    (1)Delete ajax4jsf-1.1.1.jar and richfaces.jar from jboss-seam-2.0.0.BETA1\lib.
    (2)Put richfaces-api-3.1.0-rcX,richfaces-impl-3.1.0-rcX,richfaces-ui-3.1.0-rcX into jboss-seam-2.0.0.BETA1\lib.
  2. modify jboss-seam-2.0.0.BETA1\build.xml
    (1)Delete all ajax4jsf*.jar from build.xml.
    (2)Find description="extra jars for the EAR" in build.xml
    ,delete include name="el-*.jar" and insert include name="richfaces-api*.jar"
  3. web.xml
    Ajax4jsf filter not needed, Seam Filter installs it for us.
    You can reference "booking" example.
  4. view/pages.xhtml
    Let's modify booking\view\home.xhtml.
    Add xmlns:rich="http://richfaces.ajax4jsf.org/rich" in html tag.
    Try rich:panel on booking\view\home.xhtml.
    Finally, build it ,you will see beauty richfaces.

2007年7月24日 星期二

最近JSF元件的發展

  • 眾所期待的myfaces core終於支援JSF1.2,不過Tomahawk目前尚未支援JSF1.2.
  • icefaces 1.6.0(final) release,正式支援第三方的元件Tomahawk,看來richfaces很有可能被取代掉.
  • WebGalileo Faces也加入open source的陣營,比icefaces更多元件,尚未支援JSF1.2,對Opera的支援有點差

目前客製化JSF的元件還是相當困難,如果可以做一套符合標準的TOOL來設計元件該有多好

2007年7月23日 星期一

Seam make JSF like Rails

很久沒更新BLOG了,最近忙著處理兵役的瑣事,還有找公司收留我XD,
來聊聊最近我開始玩的Seam,如果厭倦了瑣碎的XML設定方式,
Seam使用了許多優秀的annotations會讓妳感動到痛哭流涕,
並且簡化jBPM的使用方式,還有Seam-gen讓妳開發像Rails一樣快速,
presentation tier 使用icefaces,Richfaces,Myfaces和Seam Tags,最近Seam2.0 beta加入GWT,
persistence tier預設使用EJB3(許多人對EJB有很深的怨念XD),
請放心可以轉換成Hibernate,Seam是目前我看到最優秀的Framework,雖然還有許多BUG,但出身名家,不用擔心停產XD.目前玩的Seam2.0 beta有許多BUG尚未解決,期待Production版早點release讓我玩

2007年5月10日 星期四

Connect DB by ODBC on Rails

  1. Install
    rails 1.2 gem install -v=1.4 odbc-rails
    rails 1.1 gem install -v=1.3 odbc-rails

  2. Enabling Loading of the Adapter
    -> root\lib\ruby\gems\1.8\gems\activerecord-1.14.4\lib\active_record
         RAILS_CONNECTION_ADAPTERS = %w( mysql postgresql ... openbase odbc)

  3. Set up your Ap
    your ap -> config/environment.rb
                         require File.join(File.dirname(__FILE__), 'boot')
                         require 'odbc_adapter'
    -> config/database.yml
                         development:
                         adapter: odbc
                         dsn: 使用者資料來源名稱
                         username:
                         password:
                         host: localhost
                         encoding: utf8

2007年5月2日 星期三

[ICEfaces]支援myafecsTomahawk元件

1.myfaces lib
myfaces-core 1.1.5 & tomahawk v1.1.5

2.icefaces lib
ICEfaces-1.6.0-DR4

3.RI implementation會跟myfaces起衝突,把jsf-api.jar和jsf-impl.jar拿出

4.web.xml設定

(1)加入servlet
   servlet
           servlet-name Main Dispatch Servlet servlet-name
          servlet-class com.icesoft.faces.webapp.http.servlet.MainServlet servlet-class
          load-on-startup 1 load-on-startup
   servlet

   servlet-mapping
           servlet-name Main Dispatch Servlet servlet-name
           url-pattern *.iface url-pattern
   servlet-mapping

(2)將FacesServletExtensionsFilter所mapping的去除,
否則會造成myfaces和icefaces之間無法cast的錯誤

(3)加入context-param
context-param
   param-name
          com.icesoft.faces.standardRequestScope
   param-name
   param-value
          true
   param-value
context-param

(4)加入listener
listener
    listener-class
           com.icesoft.faces.webapp.http.servlet.SessionDispatcher$Listener
    listener-class
listener

5.faces-config.xml設定
若有使用facelets,將view-handler改成com.icesoft.faces.facelets.D2DFaceletViewHandler
取代com.sun.facelets.FaceletViewHandler

參考資料:
Status of ICEfaces Support for MyFaces Tomahawk Components

2007年4月24日 星期二

[Richfaces] modalPanel can not render or not submit

(1)lib
版本使用ajax4jsf-1.1.1和richfaces-3.0.1

(2)使用h:form包在內部
rich:modalPanel id="mp"
            f:facet name="header"            f:facet
            f:facet name="controls"          f:facet
            h:form
            ...
            h:form
rich:modalPanel



尚未解決的問題:
借由datatable修改下筆資料時,modelPanel沒有繪製新的資料,而是保留之前的

2007年3月29日 星期四

Frails - Rails on JSF !!!

Frails官方 | 中文站

這一天終於等到了,爽!!

一直試著使用Rails的精神來撰寫 JSF,但總是寫的很累....

程式碼多到很複雜,還要寫一堆定義檔,一直在找尋一個可以媲美Rails開發速度的方案.

不論是使用好的IDE還是facelets的技術,還有各種不同的組件Richfaces.Myfaces,

終究還是無法跟Rails抗衡.

不過~~~~~Frails的出現即將對Web Framework帶來一大震撼!!

2007年3月24日 星期六

[Richfaces] Configure Skin

Richfaces內訂七種skin:
DEFAULT,emeraldTown,wine,japanCherry,ruby,classic,deepMarine.
可以即時變換Richfaces元件的外觀.

透過這兩個簡單的步驟,即可抽換skin
1.Configure your web.xml
context-param
param-name org.ajax4jsf.SKIN /param-name
param-value #{skinBean.skin} /param-value
/context-param

2.使用backing bean從view端接收使用者所選擇的參數,
注意skin的屬性名稱只包含這七種:
DEFAULT,emeraldTown,wine,japanCherry,ruby,classic,deepMarine

以下是實例:
1.SkinBean.java(包含skin屬性以及set和get)

主要是透過此方法取得skin屬性名稱
private String getSkinParam(){
FacesContext fc = FacesContext.getCurrentInstance();
String param = (String) fc.getExternalContext().getRequestParameterMap().get("s");
if (param!=null && param.trim().length()>0) {
return param;
} else {
return null;
}
}

2.skin.xhtml

h:form
h:outputLink blueSky f:param value="blueSky" name="s" /h:outputLink
h:outputLink classic f:param value="classic" name="s" /h:outputLink
/h:form

3.LIVE_DEMO


以下是我目前碰到的狀況:
1.stack overflow
起因:似乎是form過多
解法:在那個頁面不讓使用者選擇skin,而是從別的頁面選擇skin

2.null exception
起因:在request scope的頁面選擇skin,造成原本的bean從component tree已經消失
解法:把scope設定成session(尚未測試)

3.選完skin之後,頁面回到上一頁
起因:如果是以h:outputLink的方式來傳遞參數,會遇到導向的問題
解法:重新導向頁面

2007年3月23日 星期五

Update Rails1.1.6 into Rails1.2.3 的鳥事

由於架設在國外的主機RAILS更新版本,造成原本運作的系統掛點,真的是OOXX.....

多謝賴董幫我跟阿豆阿詢問,不然我也找不出什麼問題==

hostmonster目前版本:ruby 1.8.5, rails 1.2.3

而我去年開發是用rails 1.1.6,
以下是目前找到需要修改的部份,還沒搞完.......囧

1.首先必須升級 RubyGems,這可由 gem update --system 來達成 gem update rails.

2.將新版的boot.rb以及environment.rb覆蓋掉舊的.

3.修改form元件的格式....一樣醜 ==....
<% form_tag :action => "myAction" do%>
my
<% end %>



Enhance performance on Tomahawk with facelets

Reference Performance

最近注意到JSF的SESSION吃滿重的,雖然說可以設定其他的scope,

但有許多行為必須靠session來達成,只好試著把session的負擔減輕,

不過至少不會比Wicket肥==+
1.Add there tag in tomahawk.taglib.xml.
tag>
tag-name>document /tag-name>
component>
component-type>org.apache.myfaces.Document /component-type>
/component>
/tag>

tag>
tag-name>documentHead /tag-name>
component>
component-type>org.apache.myfaces.DocumentHead /component-type>
/component>
/tag>

tag>
tag-name>documentBody /tag-name>
component>
component-type>org.apache.myfaces.DocumentBody /component-type>
/component>
/tag>

2.Add this in web.xml.
context-param>
param-name>javax.faces.STATE_SAVING_METHOD /param-name>
param-value>server /param-value>
/context-param>

context-param>
param-name>org.apache.myfaces.ADD_RESOURCE_CLASS /param-name>
param-value>org.apache.myfaces.component.html.util.StreamingAddResource /param-value>
/context-param>

context-param>
param-name>org.apache.myfaces.COMPRESS_STATE_IN_SESSION /param-name>
param-value>false /param-value>
/context-param>

context-param>
param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION /param-name>
param-value>false /param-value>
/context-param>

context-param>
param-name>org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION /param-name>
param-value>20 /param-value>
/context-param>

3.Change html,head and body on web page.
t:document -> html
t:documentHead -> head
t:documentBody -> body

2007年3月13日 星期二

JSF IDE

以下這三者皆可視覺化設計JSF,根據個人的經驗提出以下見解

1.NETBEAN
優點:
開發速度很快,而且文件滿詳細的.
元件可以即時從design移動位置.
自訂許多很方便的元件,文件也說明的很清楚.

缺點:
我的小老婆有點吃力.
拉出來的CODE滿難懂,或許是希望開發著都從design端著手,像dreamweaverㄧ樣,少看code.
如果案子有問題還是要修改,必須改code,頭就非常大了.
需要花時間了解其自訂的元件如何使用.
支援AJAX的元件還不多.


2.Java Studio Creator
優點:
開發速度很快

缺點:
我的小老婆跑不動,所以直接出局XD


3.Exadel Studio Pro
優點:
支援的元件很多Ajax4jsf,Myfaces,ADFaces,facelets.
其公司就是Richfaces的開發者,研發出支援ajax的元件.

缺點:
我的小老婆有時候會當,將eclipse所用的記憶體調高到512M以上,即可解決.
元件無法從design移動,必須修改code來移動.
怎會沒有納入ICEfaces的元件,怕被搶生意?
不是所有元件都可以視覺化預覽..囧

結語:
個人推薦的是Exadel,最近已經整合到JBoss中,正名成Red Hat Developer Studio,並且不再收錢了!!
看來這次大老們都硬起來了,希望能爲JSF注入新的活力.
將Seam整合進去之後,RHDS能把Seam的code generator發揮到什麼境界?令筆者相當期待.
不過還在研發中,有興趣的人可以先玩Exadel Studio Pro

2007年3月5日 星期一

LOGOUT IN JSF

一般我們在登出時會只接把SESSION清除
FacesContext fc = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);
session.invalidate();

但是在JSF其session會紀錄額外的資訊,
如果移除掉會造成JSF的component tree無法render,
對此有兩種解法:

1.移除其相關的attribute就好
session.removeAttribute

2.使用filter來管理權限問題