日期:2014-05-16  浏览次数:20370 次

[终于原创一文了]S2SH与EXT JS 3.1整合习作

??????? 之前在extjs官网上看到那强大的功能和绚丽的界面,也忍不住开始学了,刚刚开始学真的不大好受,用尽吃奶的力终于把extjs的两个demo组合起来作为一个留言板:


??????? 分别为
http://www.extjs.com/deploy/dev/examples/grid/progress-bar-pager.html这个demo的进度条,

http://www.extjs.com/deploy/dev/examples/grid/binding-with-classes.html这个demo的显示框结合,

看着就舒服...哈哈....转入正题:

??????? 熟悉S2SH的都知道,作为显示层的Struts是负责与页面进行交互,当S2SH整合好之后再整合extjs进去,也必然是Struts与extjs之间的事情,所以这里spring与hibernate就不啰嗦了

??????? 这里使用json来作为Struts与extjs之间的中介,与XML类似的,json是一种轻量级的数据交换格式,易于人阅读和编写,比XML的代码量更少,看起来更直观,所以这里就采用json

XML:

<article>

????? <title>文章标题1</title>

????? <text>文章正文1</text>

</article>

<article>

????? <title>文章标题2</title>

????? <text>文章正文2</text>

</article>

相当于json的:

{"article":["title":"文章标题1","text":"文章正文1"],"article":["title":"文章标题2","text":"文章正文2"}

??????? 上面的例子把等价的XML与json列出来作为对比,语法结构也很简单.

?

Struts2部分:

??????? 和以往S2SH一样,整合的方式都是一样(需要添加json-lib.jar与struts2-json-plugin.jar),唯一不同就在action返回的内容不一样,struts.xml的片段:

??? <package name="json" extends="json-default" namespace="/json">
??????? <action name="ViewMessageAction" class="viewMessageAction">
??????????? <result type="json" />
??????? </action>
??? </package>

??????? 这里是需要继承json-default,而平常使用都是继承struts-default的,还有result 的类型为json,这里并不需要返回页面,经过action处理之后Struts就返回json的字符串给extjs,至于怎么转呢?Struts2的json插件会帮我们自动转,如ViewMessageAction类中有:

private List<Messagebox> messagelist;

//省略getter&setter方法

??????? Messagebox里面的是留言ID,留言标题,留言正文等属性和相应的getter&setter方法,当执行WEBROOT/json/ViewMessageAction.action时,发现json插件已经把数据都转换好: