我是FE,也是Fe

前端来源于不断的点滴积累。我一直在努力。

统计

留言簿(15)

阅读排行榜

评论排行榜

struts2中的mode-driven体验

在很久之前我就体验(所谓体验,就是写一个demo跑跑,算不上学习)过一把struts2。但是我发现虽然struts2相对struts1.x有很大的不同,但是还是没有解决困扰我的这个问题。就是model就究竟怎么写。在一个spring-hibernate-struts的典型项目中,通常会在Hibernate中定义一个pojo实体类做ORM,但是在struts的Action同样要定义model,不会再把那个实体类再写一遍,我觉得很难受,我知道可以在Action里面声明一个实体类,但是这样总觉得不是很优雅,因为在我看来,实体类没有得到很好的复用,我曾经对struts2很冷漠。但是最近了解到struts2里面有一个Model-Driven,虽然对模型驱动开发了之甚少,但是通过自己做的简单的代码,我发现这个世界真的是缺少发现。

这也是第一次用上了maven2,最开始用到maven2是因为他可以管理依赖(dependency),我们只要在maven2的pom.xml 文件中添加一个依赖,maven 就会自动到网上下载struts所依赖的包并设置好classpath。

tip:要使用maven2的eclipse插件m2eclipse必须将eclipse3.4升级到最新的版本,不然会被报错的,update站点为:http://m2eclipse.sonatype.org/update/

新建完项目之后,在项目的右键菜单中 maven2 -> add maven2 management。整个项目的目录结构都会有变化,注意两点,添加了maven2支持后,在build path中的source没有了,需要手动添加文件夹。还有一个问题就是你必须在"Order and export"中将maven dependencies勾上,否则部署tomcat上面的时候会有包缺失。

进入正题:其实model-driven在strtus中的用法没有什么特别的地方。就是在定义Action的时候稍有不同。

 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 }

其实变化就是在定义Action的时候实现ModelDriven接口实现getModel方法。注意在声明实体对象的时候需要实例化。但是在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中定义一个User对象,那么在jsp页面上文本框的属性就应该是user.name,user.age.这样做显然更加简单。

结论

使用model-driven的方式能够将现有的实体类简单的复用为mvc模型中的model,减少代码。

疑问:虽然解决了这么个问题,但是我还是对struts有些不放心,就是tag生成的html,很难获得dom的id属性,这样给javascript的一些逻辑控制带来了麻烦,这也是我对struts不太放心的地方,不知道大家在这方面是怎么做的。


posted on 2009-05-01 23:29 衡锋 阅读(1802) 评论(2)  编辑  收藏 所属分类: struts

评论

# re: struts2中的mode-driven体验 2009-05-01 23:44 阳衡锋

源代码下载地址:http://www.blogjava.net/Files/Hafeyang/struts-model-driven.zip  回复  更多评论   

# re: struts2中的mode-driven体验 2009-05-07 13:29 BeanSoft

就是tag生成的html,很难获得dom的id属性,这样给javascript的一些逻辑控制带来了麻烦

很简单:

document.form1.['user.name'] 就行了.  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: