我是FE,也是Fe

          前端來源于不斷的點(diǎn)滴積累。我一直在努力。

          統(tǒng)計(jì)

          留言簿(15)

          閱讀排行榜

          評論排行榜

          struts2中的mode-driven體驗(yàn)

          在很久之前我就體驗(yàn)(所謂體驗(yàn),就是寫一個(gè)demo跑跑,算不上學(xué)習(xí))過一把struts2。但是我發(fā)現(xiàn)雖然struts2相對struts1.x有很大的不同,但是還是沒有解決困擾我的這個(gè)問題。就是model就究竟怎么寫。在一個(gè)spring-hibernate-struts的典型項(xiàng)目中,通常會在Hibernate中定義一個(gè)pojo實(shí)體類做ORM,但是在struts的Action同樣要定義model,不會再把那個(gè)實(shí)體類再寫一遍,我覺得很難受,我知道可以在Action里面聲明一個(gè)實(shí)體類,但是這樣總覺得不是很優(yōu)雅,因?yàn)樵谖铱磥恚瑢?shí)體類沒有得到很好的復(fù)用,我曾經(jīng)對struts2很冷漠。但是最近了解到struts2里面有一個(gè)Model-Driven,雖然對模型驅(qū)動開發(fā)了之甚少,但是通過自己做的簡單的代碼,我發(fā)現(xiàn)這個(gè)世界真的是缺少發(fā)現(xiàn)。

          這也是第一次用上了maven2,最開始用到maven2是因?yàn)樗梢怨芾硪蕾?dependency),我們只要在maven2的pom.xml 文件中添加一個(gè)依賴,maven 就會自動到網(wǎng)上下載struts所依賴的包并設(shè)置好classpath。

          tip:要使用maven2的eclipse插件m2eclipse必須將eclipse3.4升級到最新的版本,不然會被報(bào)錯(cuò)的,update站點(diǎn)為:http://m2eclipse.sonatype.org/update/

          新建完項(xiàng)目之后,在項(xiàng)目的右鍵菜單中 maven2 -> add maven2 management。整個(gè)項(xiàng)目的目錄結(jié)構(gòu)都會有變化,注意兩點(diǎn),添加了maven2支持后,在build path中的source沒有了,需要手動添加文件夾。還有一個(gè)問題就是你必須在"Order and export"中將maven dependencies勾上,否則部署tomcat上面的時(shí)候會有包缺失。

          進(jìn)入正題:其實(shí)model-driven在strtus中的用法沒有什么特別的地方。就是在定義Action的時(shí)候稍有不同。

           1 public class UserAction  extends ActionSupport  implements ModelDriven{
           2 
           3     private static final long serialVersionUID = 6863420763993646296L;
           4     private User user=new User();
           5 
              
           6     public
           Object getModel() {
           7         return
           user;
           8 
              }
           9 
          10     public String execute() {
          11         if(this.user.getAge()==20this.user.setAge(22);
          12         return SUCCESS;
          13     }
          14 }

          其實(shí)變化就是在定義Action的時(shí)候?qū)崿F(xiàn)ModelDriven接口實(shí)現(xiàn)getModel方法。注意在聲明實(shí)體對象的時(shí)候需要實(shí)例化。但是在jsp頁面上也是有不同的。

          1 <s:form action="UserAction" theme="css_xhtml">
          2     <s:textfield name="name" label="姓名"></s:textfield>
          3     <s:textfield name="age" label="年齡"></s:textfield>
          4     <s:submit value="GO"></s:submit>
          5 </s:form>


          如果按照通常的做法在Action中定義一個(gè)User對象,那么在jsp頁面上文本框的屬性就應(yīng)該是user.name,user.age.這樣做顯然更加簡單。

          結(jié)論

          使用model-driven的方式能夠?qū)F(xiàn)有的實(shí)體類簡單的復(fù)用為mvc模型中的model,減少代碼。

          疑問:雖然解決了這么個(gè)問題,但是我還是對struts有些不放心,就是tag生成的html,很難獲得dom的id屬性,這樣給javascript的一些邏輯控制帶來了麻煩,這也是我對struts不太放心的地方,不知道大家在這方面是怎么做的。


          posted on 2009-05-01 23:29 衡鋒 閱讀(1868) 評論(2)  編輯  收藏 所屬分類: struts

          評論

          # re: struts2中的mode-driven體驗(yàn) 2009-05-01 23:44 陽衡鋒

          源代碼下載地址:http://www.aygfsteel.com/Files/Hafeyang/struts-model-driven.zip  回復(fù)  更多評論   

          # re: struts2中的mode-driven體驗(yàn) 2009-05-07 13:29 BeanSoft

          就是tag生成的html,很難獲得dom的id屬性,這樣給javascript的一些邏輯控制帶來了麻煩

          很簡單:

          document.form1.['user.name'] 就行了.  回復(fù)  更多評論   


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 怀集县| 定南县| 重庆市| 隆安县| 石家庄市| 九龙坡区| 织金县| 河池市| 高台县| 历史| 吴旗县| 元阳县| 双峰县| 冷水江市| 徐汇区| 方山县| 乃东县| 泰来县| 吴堡县| 海宁市| 泸水县| 麟游县| 东山县| 芦山县| 收藏| 库伦旗| 讷河市| 辉县市| 岑巩县| 碌曲县| 扎囊县| 施甸县| 仙桃市| 措勤县| 宁南县| 同心县| 利川市| 平湖市| 同德县| 仁怀市| 望城县|