java 板


LINE

※ 引述《tkcn (小安)》之銘言: : ※ 引述《Killercat (殺人貓™)》之銘言: : : asp.net有類似HtmlTableController的東西可以動態產生html碼,所以java有沒有這種? : : 可能類似 : : HtmlTable table = new HtmlTable(); : : table.addCaptain("Web App Name : "); : : for(FooObj obj : objlists) : : table.addRow(new HtmlTD(obj.getName()), : : new HtmlTD(obj.getDir()), : : new HtmlTD()...); : : out.println(table.generateHTML()); : : 這樣的東西? : 有的, : 在 Google Web Toolkit (GWT) 2.0 "之前" 的版本, : code 差不多就是長這樣。 哪有這麼討厭... ==.==== 明明 Grid 跟 FlexTable 根本不用管 <tr> <td> 直接 table.setText(col, row, " blahblah"); 要空格跳格都沒關係(當然,如果 border 跟 css 沒弄好會有點醜) 要塞其他 widget (component) 也沒問題(table.setWidget()) 無聊一點也可以用 VerticalPanel 跟 HorizontalPanel 慢慢弄 [毆飛] : 之所以特別強調 "之前",是因為 2.0 以後多了 uiBinder, : 撇開一些細節不談,這東西其實有點像是其他語言中的 Template。 小聲說:UiBinder 不太能對付表格狀的東西 [毆飛] : 簡單的說就是,UI 相關的 code 如 HTML, CSS 仍然如同靜態網頁的寫法, : 只將需要動態改變的部份,用特殊的語法標示出來,方面程式將需要的資料塞入其中。 : 相較於 HTML, CSS, JavaScript 全塞在 JSP/Servlet 的作法, : 使用 Template 也有助於美工與程式設計師之間的合作。 而且還有 GWT Designer(base on WindowBuilder) 想要 WYSIWYG 也可以! : 總而言之,GWT 即使在 2.0 之後,依然支援舊的 UI 使用方式, : 然而我個人目前還是比較喜歡 uiBinder/Template 的作法。 還有一個 2.0 以後的大絕招,叫 Cell Widget 例如你要作一個顯示 Foo 這個 pojo 的清單 假設 Foo 長這樣 class Foo{ String name; Date date; int x; int y; //skip getter, setter, constructor and blahblah } 那麼 //這是主角 CellTable<Foo> list = new CellTable<Foo>(); //讓日期好看 & 炫耀的多餘物 XD DateTimeFormat format = DateTimeFormat.getFormat("MM/dd"); //設定各個 column 要怎麼顯示 TextColumn<Foo> nameClmn = new TextColumn<Foo>{ public String getValue(Foo vo){ return vo.getName(); } } TextColumn<Foo> dateClmn = new TextColumn<Foo>{ public String getValue(Foo vo){ return format.format(vo.getDate()); } } TextColumn<Foo> numClmn = new TextColumn<Foo>{ public String getValue(Foo vo){ return "("+vo.getX()+","+vo.getY()+")"; } } //設定 column 的先後順序、還有 <th> 叫啥 list.addColumn(nameClmn, "名字"); list.addColumn(dateClmn, "日期"); list.addColumn(numClmn, "座標"); //最後設定資料來源 AsyncDataProvider<Foo> dataProvider = new AsyncDataProvider<Foo>(){ //牽扯到 GWT RPC,先跳過 //簡單地說就是在這裡向 server 要資料 } dataProvider.addDataDisplay(list); //也有 SelectionModel 可以設定點選某 row 之後的動作 //還附送分頁機制,基本上兩三行解決,還不用一次全部 load 回來 打完收工! 搭配 UiBinder 來配置 layout 也沒問題 \囧/ 還有其他的 Cell 系列 widget 可以用 \囧/ 要客製化自己的 Cell widget 也不是問題 \囧/ 就這麼簡單、就這麼 Java、還不趕快弄一套來用 [咦咦?] 當然,我不會那麼壞心隱藏糟糕點 →Cell Widget 背後運作原理相當複雜、class hierarchy 互相糾結 在土砲地追了一兩天 source code 甚至懷疑裡頭有重複呼叫 method 的嫌疑 (僅供參考 XD) →這導致如果你要用 CellTable 作一些本身規格以外的事情 會有一種使不上力、也不知要無從改起的困擾 (這很可能只是個人程度問題 Orz) 在小量資料、需要一些額外操作的 pojo 我會選擇自己刻 widget [炸] : 如果你先前沒接觸過相關的知識, : 不妨先去了解一下其他語言如 JSP,使用 Template 的方式, 還是一樣,把糟糕點一起講一講 GWT 可以用 Java 寫網頁的很歡樂, 這裡只講「畫面組成可以多 Java」 但是 →運氣不好還是需要了解網頁的 rendering 機制 就像真正下去寫 Swing 還是會遇到 rendering 機制的問題 只是現在面對的是瀏覽器的機制 如果會 CSS、或身邊有會 CSS 的人一起配合會少一點鬼打牆的狀況 例如為甚麼(在某些瀏覽器)add 一個 widget 會沒反應 但是 setSize() 之後就正常 他們那種每天在算 margin/padding 的人,通常會對這種東西很了解 →跟傳統 JSP/PHP 比起來,debug 會困難一點 畢竟傳統 JSP/PHP... 說穿了就是字串操作 當然,如果你有打算卡 AJAX 我想其他解決方案也差不多痛苦、也許 jQuery 派會容易些 但是 GWT 要抓 rendering 機制造成的錯誤,真的還蠻痛苦的 →目前 development mode 下,實際操作的反應的確不太快 按個 button 都可以 lag 個一秒鐘才有反應 這對作遊戲的可能更明顯,參閱這篇 http://pt2club.blogspot.com/2011/02/gwt-html5.html 當然,實際 deploy 成 JS 就不會有速度上的困擾 : 如果仍然不習慣,那... : 歡迎你加入 GWT 陣營 \囧/ 錯錯錯!當然是「不管你習不習慣...」 歡迎你加入 GWT 陣營 \囧/ ==== 總之,不要再用 servlet 兜畫面了...... [炸] -- 錢鍾書: 說出來的話 http://www.psmonkey.org 比不上不說出來的話 Java 版 cookcomic 版 只影射著說不出來的話 and more...... --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.12.165
1F:→ Killercat:其實當初是不想跑iis/mono才選我也很熟練的java XD 02/19 01:45
2F:→ Killercat:而且我本來就在開android,很多code module可以重用 02/19 01:47
3F:→ Killercat:不過說真的新大陸也滿好玩的,來玩玩看吧(?) XD 02/19 01:49







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP