張昊

          J-Hi(http://www.j-hi.net)

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            45 Posts :: 1 Stories :: 110 Comments :: 0 Trackbacks

          2011年5月19日 #

          http://developer.51cto.com/developer/51cto-salon-13/





          視頻點播
          《Java快速開發的分析與探索》[上](張昊)
          《Java快速開發的分析與探索》[下](張昊)
          《Java快速開發平臺使用》(肖金華)
          用戶交流與問答環節

          推薦閱讀


          51CTO電子雜志《開發月刊》

          51CTO開發頻道推出《開發月刊》電子雜志。主要內容涵蓋Java、.NET、WEB開發、數據庫和移動開發等等。從技術細節到項目管理,方方面面為開發者服務。



          往期回顧
           
          51CTO技術沙龍之IDC挑選運維經驗談
          51CTO技術沙龍之掌握網絡流量分析與系統監控
          51CTO技術沙龍之企業服務器安全攻與防
          51CTO技術沙龍之Linux系統安全
          51CTO技術沙龍之解析中小企業網絡運維
          51CTO技術沙龍之Web開發前沿技術探索與實戰
          51CTO技術沙龍之大型網站PHP開發之道
          51CTO技術沙龍之 IT技術人,茫茫職業人生路
          51CTO技術沙龍之 如何快速定位黑客攻擊
          51CTO技術沙龍之 關于企業安全運維的那些事兒
          51CTO技術沙龍之 站在業務擴展的角度看Linux運維技術
          51CTO技術沙龍之 從菜鳥到CTO,你的目標需要管理
          51CTO技術沙龍之 兩小時成為反掛馬達人
          51CTO技術沙龍之 全方位解析虛擬化
          51CTO技術沙龍之 企業基礎網絡與核心服務搭建
          51CTO技術沙龍之 負載均衡2期

          沙龍導讀與PPT下載

          51CTO技術沙龍第十三期總結:Java快速開發之路
          在2011年9月3日下午51CTO舉辦的第13期51CTO技術沙龍中,有幸請到Java開源平臺——J-Hi的兩位創始人張昊老師和肖金華老師。二位講師分別從理論和實戰來為大家介紹J-Hi,打開Java快速開發之路。查看
          PPT下載:《Java快速開發的分析與探索》(張昊)
          詳細分析快速開發與傳統開發方式在開發形式上的差異,兩個模式所存在的風險及如何規避這些風險,并對開發效率、成本及開發規范做出對比。最后闡述為什么快速開發將是以后軟件開發的趨勢。 PPT下載 | 視頻下載
          《Java快速開發平臺使用》(肖金華)
          主要介紹怎樣架構你的互聯網應用才能顯得不是那么草根,基于弱關系理論的結構化數據存儲與程序設計高性能的數據緩沖層讓你的數據離CPU再近一些。如何定位應用的性能瓶頸以及系能優化的思路。 視頻下載
           

          本期講師介紹

           
           
          J-Hi快速開發平臺團隊核心成員 張昊
          軟迅博技術發展有限公司首席架構師,開源J-Hi快速開發平臺團隊核心成員,平臺項目的主要發起者與組織者。
          軟迅博技術發展有限公司項目總監 肖金華
          開源J-Hi快速開發平臺團隊核心成員,十一年軟件開發經驗,帶領完成過多個大型項目。熟悉保險及電力行業,曾任某IT公司保險業務線架構師。
           
           

          相關Java專題


          51CTO開發頻道專訪J-Hi快速開發平臺團隊核心成員張昊先生,向大家講述J-Hi快速開發平臺從創意到研發再到產品的完整脈絡和技術領域以及對廣大愛好者的一些建議。


           

          2011年7月7日,甲骨文舉行了生活的全球性活動,以慶祝即將到來的Java 7推出。標準版Java SE 7是對Java社區和甲骨文對開發語言和技術持續承諾的一種肯定。

            

          沙龍現場照片


           
           
           
           
           
           
           
           
           
           
           



          posted @ 2011-09-16 23:48 張昊 閱讀(1203) | 評論 (2)編輯 收藏

          http://weibo.com/javahi
          posted @ 2011-09-09 16:26 張昊 閱讀(888) | 評論 (1)編輯 收藏


          描述:在DWZ版中lookup的處理機制與經典的完全不同,對于lookup有兩種展現形式,一種是通過點擊lookup圖標彈出對話框后帶回選中的值,另一種是通過在文本框中輸入相應信息從而實現聯機式的查找帶回效果。從實現目的來看,無非是讓lookup的實體的主鍵值帶回到hidden的一個元素中,而其它值只是作為顯示參考之用,與底層的數據庫結構與數據庫表無關。一個完整的lookup由如下html元素構成:1)一個hidden用于保存帶回實體主鍵的ID值;如果要實現缺省的lookup過濾或排序可以相應的pageInfohidden元素,具體實現方式的用例參見《HowTo手冊》;2ntext用于顯示帶回的多個數據帶回項(注意:因為帶回的數據項與數據訪問層也就是數據庫表無關,因此每個textname都有一個hi_作為前綴);3)一個lookup有且只有一個主帶回項,只有主帶回項的文本框是可編輯的并且只有主帶回項會有lookup圖標也就是html的中的a元素。

          擴展屬性名

          lookupGroup

          lookup組可以理解為當前實體的名字,如果當前lookup組件是主實體中,則lookupGroup就是實體名,如果當前lookup組件在從實體(也就是明細表的lookup)中,則lookupGroup就是明細的集合屬性名

          lookupName

          lookup名可以理解為當前lookup實體的屬性名。從整體的DWZ框架來分析,實際上所有的tab都在一個IE窗口,也就是說JS文件在打開瀏覽器只會加載一次。這就產生了必須要保證每一個html元素的唯一性,即使是在不同的tab下也是如此。對于lookup來說,是通過lookupGroup+lookupName來確定元素的唯一性的。

          suggestClass

          主帶回項才會有該屬性,實現聯想查找帶回

          lookup實體的POJO類的全限定名

          searchFields

          查詢過濾的屬性名列表,以逗號分隔。例如帶回HiUser,該屬性的值為”fullName,userNum”,在文本框中001則平臺會查詢姓名或者是編號為001的所有用戶

          callback

          回調方法名,在查找帶回值后系統會回調該屬性的值的方法,以實現您對帶回后的特殊處理。例如callback=fun,那么在帶回值后系統會自動調用fun方法,并會自動傳入兩個參數fun(json,index),其中json:是帶回的完整json對象,index:是索引值,主要用于明細的帶回時要提供是第幾條明細記錄

           

          場景描述:一個會員編輯頁面要指定該會員所在的省份、城市、地區,要求在選擇省份后會自動過濾該省份的城市,地區以此類推。

                 以下所有步驟只是修改OrganizationEdit.jsp文件,即可

          步驟一、為省份的主帶回項加callback回調方法,并在實現該js方法

          <input type="text" class="textInput" name="organization.hi_province.name" value="${organization.province.name}" callback="processProvince"

              function processProvince(json){

                 document.getElementById("pageInfo.province.f_id").value = json.id;

              } //該方法的目的是在選擇某個省份后將該省份的ID值放到指定的hidden元素中

          步驟二、為城市加一個用于過濾的hidden元素,注意processProvince()方法中的賦值語句就是該hidden元素;用于過濾的name必須與PageInfo的具體類相對應;必須要指定lookupGrouplookupName

          <input type="hidden" lookupGroup="organization" lookupName="city" name="pageInfo.province.f_id" id="pageInfo.province.f_id" value=""/>

              步驟三、為城市的主帶回項加callback回調方法,并在實現該js方法

          <input type="text" class="textInput" name="organization.hi_city.name" value="${organization.city.name}callback="processCity"

              function processCity(json){

                 document.getElementById("pageInfo.city.f_id").value = json.id;

          }

          步驟四、為地區加一個用于過濾的hidden元素

          <input type="hidden" name="pageInfo.city.f_id" id="pageInfo.city.f_id" lookupGroup="organization" lookupName="region" value=""/>

          總結:級聯下拉實際上是lookup的一個變種形式,主要的思想是為你要級聯的下拉的lookup加入過濾項,例如在城市加一個省份的過濾項,在選擇省份時后,會通過回調方法將這個過濾項的值存到該過濾項中。這樣逐級過濾就實現了級聯下拉的效果.

          posted @ 2011-06-03 17:53 張昊 閱讀(2280) | 評論 (5)編輯 收藏

                 大家可以簡單將J-Hi建模工具理解為數據庫的E-R圖,每個實體就對應一個數據庫的表,而實體中每個屬性就對應數據庫表的一個字段。那么實體與實體之間的關系或表與表的關系又是如何描述的呢?

                 對于數據庫表的關系大體可分為,如下幾種形式

                 many-to-one:相當于一個數據庫表的字段(外鍵)對應另一張數據庫表的主鍵,對于J-Hi來說,就是一個lookup(查找帶回)。即一個實體中的某個屬性是lookup類型,這個屬性會lookup另一個實體。對lookup定義的操作步驟請參見“應用開發視頻”。頁面中的展示形式,例如你有一個報銷單,要lookup用戶,那么平臺就會自動將用戶的名稱帶回來,并在數據庫中將用戶的ID值保存到報銷單表的相應字段中。

           

                 one-to-many:相當于一個數據庫表下面會有一個或多個明細表,例如一個報銷單是主表而報銷單明細是明細表。在數據庫端的實現形式為,在明細表中有一個主表的外鍵ID字段。在J-Hi中我們稱之為引用,具體操作見聯機幫助

           

                 one-to-one:所謂一對一的關系在數據庫上的理解為,B表每加一條記錄A表也會隨著增加一條記錄,在J-Hi中的表現形式為實體繼承

                 對于實體的繼承,不只是簡單的表one-to-one關系,實體的繼承還包括所有的java類的繼承關系,JSP頁面的整合等等

                

                 many-to-many:多對多是一種復雜的表關系,J-Hi是通過中間過渡表來實現這種多對多的關系,例如一個項目可以有多個成員,而一個成員又有可能在多個項目中,建模的圖為

          posted @ 2011-05-31 10:34 張昊 閱讀(1114) | 評論 (0)編輯 收藏

          1.前臺頁面:

          //自定義一個回調函數ajaxDone

          <form action="expert_BaseInformationSave.action?navTabId=expert_BaseInformationList&callbackType=closeCurrent&ajax=1"

          method="post" class="pageForm required-validate" onsubmit="return validateCallback(this, ajaxDone)">

           

          //回調函數

          <script type="text/javascript">

                 function ajaxDone(json)

                 {

                        alert(json.expert.name);

                 }

          </script>

           

          2.后臺代碼:

          public class Expert_BaseInformationSaveAction extends BaseAction implements SynchronizationData{

                 private Expert_BaseInformation expert_BaseInformation;

                 private JSONObject json;

           

                 public String execute() throws Exception {

                        Expert_BaseInformationManager expert_BaseInformationMgr = (Expert_BaseInformationManager)

          SpringContextHolder.getBean(Expert_BaseInformation.class);

                        if(super.perExecute(expert_BaseInformation)!= null) return returnCommand();

                        expert_BaseInformationMgr.saveExpert_BaseInformation(expert_BaseInformation);

                        super.postExecute(expert_BaseInformation);

                        json = new JSONObject("expert", expert_BaseInformation, "name, gender, unit");

                       

                        return "json";

                 }

                

                 public Expert_BaseInformation getExpert_BaseInformation() {

                        return expert_BaseInformation;

                 }

           

                 public void setExpert_BaseInformation(Expert_BaseInformation expert_BaseInformation) {

                        this.expert_BaseInformation = expert_BaseInformation;

                 }

           

                 public JSONObject getJson() {

                        return json;

                 }     

          }

           

          注意:action中必須定義public JSONObject getJson() {

                        return json;

                 } 否則前臺無法獲取json數據。



                                               注:該文檔由J-Hi愛好者"笨笨"提供,他的QQ號為289542213,歡迎大家與他在技術上多多交流


          posted @ 2011-05-29 22:21 張昊 閱讀(888) | 評論 (0)編輯 收藏

          本文主要講解J-hi中樹的過濾。以員工部門樹為例。

          要求在點擊某個員工時,能夠查看到該員工所在的部門。

           

           

                     1-部門樹

          下圖2是所有員工列表:

          -2

          當點擊王五時,顯示王五所在的部門結構樹如圖3

                -3

          主要代碼部分:

          Jsp超鏈接代碼:

          <a

          href="tree.action?menuName=orgList&orgId=${item.org.id}" target="dialog">${item.org.orgName}</a>

          注意:orgId是動態傳入的參數,這里指該員工所在的部門編號。

          2、在himenu-config.xml中配置部門樹的后面加上這么一段

          <void property="filter">

             <string>org.cis.filter.orgCollectionProcessor</string>

           </void>

          注意:string標簽內的是寫過濾數據的類。對樹的數據進行過濾,提供兩種接口方式對數據進行過濾 MenuFilterProcessor 在獲取數據之前填加過濾器;MenuCollectionProcessor 在獲取數據之后再對數據做整理.具體方法查看java-docAPI

          而例子的orgCollectionProcessor類代碼:

          public class orgCollectionProcessor implements MenuCollectionProcessor {

           

              public Collection getCollection(Collection coll, Map<String, String> map) {

                 // TODO Auto-generated method stub

                 //coll - 當前節點下一級節點的數據集合

                  //map 動態的傳入數據,map的形式

                 //傳入一個員工的所在的部門Id,返回該員工所在的部門結構樹

                 int orgId=Integer.parseInt(map.get("orgId").toString());

                 for (Iterator iterator = coll.iterator(); iterator.hasNext();) {

                     Object obj = (Object) iterator.next();       

                     if(obj instanceof HiOrg){

                        HiOrg hiorg = (HiOrg)obj;             

                        if(hiorg.getId()!=orgId) {

                            iterator.remove();

                            coll.remove(obj);

                        }

                     }

                 }

                 return coll;

              }  

          }


                                               注:該文檔由J-Hi愛好者"無可"提供,他的QQ號為924372739,歡迎大家與他在技術上多多交流


          posted @ 2011-05-19 22:04 張昊 閱讀(856) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 四平市| 施秉县| 德州市| 阳信县| 卢湾区| 波密县| 政和县| 乐清市| 乐山市| 洛浦县| 芮城县| 浮梁县| 舟山市| 嘉善县| 海城市| 即墨市| 亳州市| 辽阳县| 东光县| 安平县| 图木舒克市| 平舆县| 旌德县| 林甸县| 疏勒县| 嘉鱼县| 四子王旗| 唐海县| 资中县| 萝北县| 萨迦县| 缙云县| 龙陵县| 翁牛特旗| 灌阳县| 黄大仙区| 木兰县| 华坪县| 荃湾区| 阿拉善右旗| 株洲县|