posts - 20,  comments - 2,  trackbacks - 0

          作者: tianshi0253  鏈接:http://tianshi0253.javaeye.com/blog/202865  發(fā)表時(shí)間: 2008年06月13日

          聲明:本文系JavaEye網(wǎng)站發(fā)布的原創(chuàng)博客文章,未經(jīng)作者書(shū)面許可,嚴(yán)禁任何網(wǎng)站轉(zhuǎn)載本文,否則必將追究法律責(zé)任!

          人生像個(gè)舞臺(tái),請(qǐng)良家少女離開(kāi)。
              同樣的,F(xiàn)reemarker和Velocity愛(ài)好者請(qǐng)?zhí)^(guò)本篇。與棄用webwork而單用Spring MVC Controller接口的理由一樣,Freemarker本來(lái)是一樣好東西,還跨界支持jsp 的taglib,而且得到了WebWork的全力支持,但為了它的非標(biāo)準(zhǔn)化,用戶數(shù)量與IDE的缺乏,在View層我們還是使用了保守但人人會(huì)用,IDE友好的JSP2.0 配合JSTL。

             
          對(duì)于B/S結(jié)構(gòu)的企業(yè)應(yīng)用軟件來(lái)說(shuō),基本的頁(yè)面不外兩種,一種是填Form的,一種是DataGrid 數(shù)據(jù)列表管理的,再配合一些css, js, ajax的效果,就是View層要關(guān)注的東西了。

          1. JSP 2.0的EL代替<c:out>
          JSP2.0可以直接把EL寫在html部分,而不必動(dòng)用<c:out>節(jié)點(diǎn)后,老實(shí)說(shuō),JSP2.0+JSTL達(dá)到的頁(yè)面效果,已不比Velocity相差多少了。

          <p>{goods.name}</p> 
          代替
          <p><c:out value="{goods.name}"/></p>

           

          (除了EL里面不能調(diào)用goods的函數(shù),sun那幫老頑固始終堅(jiān)持JSTL只能用于數(shù)據(jù)顯示,不能進(jìn)行數(shù)據(jù)操作,所以不能調(diào)用bean的get/set外的方法)

           2. 最懶的form 數(shù)據(jù)綁定

              Spring少得可憐的幾個(gè)tag基本上是雞肋,完全可以不要。 而Spring開(kāi)發(fā)中的那些Simple Form tag又還沒(méi)有發(fā)布。Spring的Tag主要用來(lái)把VO的值綁到input框上。但是,和Struts一樣,需要逐個(gè)Input框綁定,而且語(yǔ)法極度冗長(zhǎng),遇到select框還要自己進(jìn)行處理.....典型的Spring Sample頁(yè)面讓人一陣頭暈.

              而jodd的form tag給了我們懶人一個(gè)懶得多的方法,只要在<form>兩頭用<jodd:form bean="myVO"></jodd:form>包住,里面的所有input框,select框,checkBox...統(tǒng)統(tǒng)自動(dòng)被綁定了,這么簡(jiǎn)單的事情,真不明白struts,spring為什么不用,為了不必要的靈活性么?

          <form>
          <jodd:form bean="human">
          <input type="text" name="name">
          <input type="radiobox" name="sex" value="man">
          <select name="age">
            <option value="20">20</option>
            <option value="30">30</option>
          </select>
          </jodd:form>
          </form> 

           

           

          不過(guò),jodd有個(gè)致命弱點(diǎn)是不能綁定內(nèi)嵌對(duì)象的值。比如Order(訂單)對(duì)象里有個(gè)Customer(顧客)對(duì)象,jodd就不能像 struts,spring一樣用如下語(yǔ)法綁定:

           

          <input name="customer.customerNo">

           

          這是因?yàn)樗腷eanUtils比Jakata Common弱,用了一個(gè)錯(cuò)誤的思路的緣故。 動(dòng)用beanUtils修改一下就可以了,修改后的源碼可以在這里下載

          3. DataGrid數(shù)據(jù)列表

          DisplayTag和ValueList都屬于這種形式的Tag Library。但最近出現(xiàn)的Extreme Table是真正的killer,他本身功能強(qiáng)大不說(shuō),而且從一開(kāi)始就想著如何讓別人進(jìn)行擴(kuò)展重載,比如Extend Attributes機(jī)制就是DisplayTag這樣的讓千人一面者不會(huì)預(yù)留。


          4.css, javascript, ajax
          天下紛擾,沒(méi)有什么特別想講想推薦的,愛(ài)誰(shuí)誰(shuí)吧。Buffalo, DWR, Scriptaculous, Prototype, AjaxTags, AjaxAnywhere, Rico, Dojo, JSON-RPC,看著名字就頭痛。

           

          相關(guān)文章:

          簡(jiǎn)化Spring(1)--配置文件

          簡(jiǎn)化Spring(2)--Model層

          簡(jiǎn)化Spring(3)--Controller層

          簡(jiǎn)化Spring(4)--View層

           


          本文的討論也很精彩,瀏覽討論>>


          JavaEye推薦




          文章來(lái)源:http://tianshi0253.javaeye.com/blog/202865
          posted on 2008-06-13 11:03 姚文超 閱讀(71) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 靖边县| 丰原市| 镇安县| 瓮安县| 长宁区| 象州县| 大宁县| 墨竹工卡县| 富蕴县| 射阳县| 陇南市| 文成县| 承德县| 沁阳市| 广宁县| 墨江| 兴城市| 宿州市| 繁昌县| 洪雅县| 马尔康县| 威信县| 宁河县| 泸水县| 堆龙德庆县| 夏河县| 于田县| 理塘县| 濮阳县| 富锦市| 承德县| 大新县| 清徐县| 宾川县| 鞍山市| 五指山市| 天镇县| 青岛市| 遂宁市| 泽普县| 泰兴市|