以前用過Struts,感覺使用request.getParameter,以及ActionForm,DynaForm挺麻煩的, 後來接觸到JSF.發現這個東東還不錯的. 不過,單純使用SUN RI或者MyFaces的實現,還是很麻煩的. 還要加上Tomahawk,Shale 與Springframework,及使用Ibatis的ORM, 這樣才能得心應手. 如果要使用統一風格的頁面,而不使用frame,可以用tile,必須是Tile2(不過還沒有發佈正式的版本).
在JSF的定義文件裡面 可以定義JSP的Back Bean, 如/customer/edit.jsp 則定義一個name="customer$edit"的JSF Manage Bean,Scope=Request 而且這個必須extends AbstractViewController, 經由這個AbstractViewController你可以方便的使用Spring的Beans.
不過JSF還不是很完善,現在用的是1.1的版本,比如缺少對重複提交的控制(Struts就有SaveToken),而Shale提供的token標籤又太弱了,幸好在網上google到了一個解決方法,就是自己寫一個htmlform. 還有使用Tomahawk的saveState的標籤對於想要保存Bean的某些數據的狀態,而又不想用Session Scope的情況下很有用.使用session過多畢竟怕怕; Tomahawk亦提供了Calendar及DataTable等組件,雖然像Calendar還有些缺陷; 另外,Myfaces還有一個SandBox的項目,可以處理觸發式提交,Excel導出,建議輸入等功能; .....
在JSF的定義文件裡面 可以定義JSP的Back Bean, 如/customer/edit.jsp 則定義一個name="customer$edit"的JSF Manage Bean,Scope=Request 而且這個必須extends AbstractViewController, 經由這個AbstractViewController你可以方便的使用Spring的Beans.
不過JSF還不是很完善,現在用的是1.1的版本,比如缺少對重複提交的控制(Struts就有SaveToken),而Shale提供的token標籤又太弱了,幸好在網上google到了一個解決方法,就是自己寫一個htmlform. 還有使用Tomahawk的saveState的標籤對於想要保存Bean的某些數據的狀態,而又不想用Session Scope的情況下很有用.使用session過多畢竟怕怕; Tomahawk亦提供了Calendar及DataTable等組件,雖然像Calendar還有些缺陷; 另外,Myfaces還有一個SandBox的項目,可以處理觸發式提交,Excel導出,建議輸入等功能; .....