首先,自我表扬一哈
,经过几个晚上的努力,终于研究出来了Struts2整合ExtJS,感觉Struts2进化了好多, 写起来方便多了,虽然现在在Eclipse上面没有很好的插件,但是感觉开发周期还是缩短了不少,Action的配置只是粘贴复制的功夫,所以插件现在对 我来说起不到蛮大的作用,长话短说,开始步入正题。 我这里做的是一个Login的Demo,虽然功能简单,但是Struts2大致的工作流程是一样的,我用的Struts2是最新版的,版本号为2.1.6,ExtJS版本号为3.0,界面好看些。这里我的工程目录,如图:
新版本的Struts2的commons-fileupload-1.2.1.jar包要加上,不然会抛Unable to load configuration. - bean的一个异常,登录窗口如图:
怎么用ExtJS画页面就不说了,网上到处都是,这里只说下Action的配置,首先要配置web.xml,所有的提交是先提交到Struts2的拦截器。web.xml:
然后要配置struts.xml,他是将从Struts2拦截器中的Action分配到每个Action类,但是这里我不是这样写的,我的 struts.xml也只是做一些分配的事情,例如,我这里的登录是对于User的操作,所以我这还会建一个user.xml文件,将 struts.xml从拦截器中得到的Action分配给user.xml,struts.xml:
struts.xml包含user.xml,user.xml配置:
package标签下的namespace属性我这里主要用来区分页面上面url地址,如图:
url后面的user就是我的命名空间,前面配置都很简单,后面Action的建立,我分了两步,第一步配置的是一个基本的Action,我跟它取 名叫BaseAction,它需要继承Struts2的ActionSupport,这个类里面我除了配置简单的request和response外,我 还做了一个封装JSON的方法,方便以后Action直接调用outJson这个方法就可以把某一个对象转换成JSON传到前台。方法如图:
第二步就是配置一个结果集,这个结果应该可以满足ExtJS,如图:
这个类的get和set方法这里就不写了,反正Eclipse都可以帮我们自动生成,它其实就是个简单的JavaBean。 最后就是写我们的Action了,我跟它取名叫UserAction,它继承BaseAction,那么他就可以使用BaseAction所有的方法
其实这个Action也很简单,获取前台传过来的uname和upwd,看两个变量是否等于1,如果等于,就调用结果集的setSuccess方 法,将字符串true传入进去,否则就将字符串false传入进去,然后调用BaseAction的outJson方法,将结果集转换成JSON对象的字 符串传到前台。 前台得到结果,如果结果是true,则提示登陆成功,如果结果是false,则提示登录失败,如图:
http://hi.baidu.com/toto902/blog/item/d7a1c1ef3cffe1f3b2fb95b7.html
这个提示框是ExtJS3.0的一个小bug,与某些浏览器不兼容,可能在以后的版本中会改进。
相关资源:struts2和ExtJs整合实例