JSON插件提供了一种名为json的ResultType,一旦为某个Action指定了一个类型为json的Result,则该Result无需映射 到任何视图资源。因为JSON插件会负责将Action里的状态信息序列化成JSON格式的数据,并将该数据返回给客户端页面的JavaScript。
简单地说,JSON插件允许我们在JavaScript中异步调用Action,而且Action不再需要使用视图资源来显示该Action里的状态信息,而是由JSON插件负责将Action里的状态信息返回给调用页面——通过这种方式,就可以完成Ajax交互。
Struts2提供了一种可插拔方式来管理插件,安装Struts2的JSON插件与安装普通插件并没有太大的区别,一样只需要将Struts2插件的JAR文件复制到Web应用的WEB-INF/lib路径下即可。
安装JSON插件按如下步骤进行:
(1)登陆http://code.google.com/p/jsonplugin/downloads/list站点,下载Struts2的JSON插件的最新版本,当前最新版本是0.7,我们可以下载该版本的JSON插件。
(2)将下载到的jsonplugin-0.7.jar文件复制到Web应用的WEB-INF路径下,即可完成JSON插件的安装。
实现Actio逻辑import com.googlecode.jsonplugin.annotations.JSON;import com.opensymphony.xwork2.Action;public class JsonTestAction { private String username; private String password; private boolean success; private Map map = new HashMap(); public String checkLogin(){ if(this.getPassword()!="" && this.getUsername()!=""){ //第一种方式 将要返回给页面的数据放到HashMap里生成数据格式“{"map": //{"success":true},"username":"ww"}” //map.put("success", true); //第一种方式 将要返回给页面的数据放到变量里生成数据格式“{"map": //"success":true,"username":"ww"}” success = true; return Action.SUCCESS; }else{ return Action.INPUT; } } @JSON(serialize=false) public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public boolean isSuccess() { return success; } public Map getMap() { return map; } public void setMap(Map map) { this.map = map; }}在上面代码中,使用了JSON注释,注释时指定了serialize域,serialize域指定Action属性被序列化成JSON对象时是否序列化该属性。除此之外,JSON注释还支持如下几个域:
name: 设置成JSON对象的属性名
deserialize:设置是否反序列化该属性。
format:设置用于格式化输出、解析日期表单域的格式。例如"yyyy-MM-dd'T'HH:mm:ss"。
配置该Action的struts.xml文件代码如下:<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <package name="privilege" extends="json-default" namespace=""> <action name="user" class="login"> <result type="json"></result> </action> </package></struts>在上面配置文件中有两个值得注意的地方: 第一个地方是配置struts.i18n.encoding常量时,不再是使用GBK编码,而是UTF-8编码,这是因为Ajax的POST请求都是以UTF-8的方式进行编码的。
第二个地方是配置包时,自己的包继承了json-default包,而不再继承默认的default包,这是因为只有在该包下才有json类型的Result。
第三个地方是数据以ajax方式提交则Extjs会自动处理json数据,要是以非ajax方式提交数据,则会弹出保存数据的对话框,需要自己处理json类型数据
分享到:
相关推荐
ExtJs + Struts2 + JSON 程序总结
iterator_jsonDemo1的链接:http://download.csdn.net/detail/cafebar123/8816409 运用了Extjs,Struts2, json,iterator技术, 将数据从后台传到Extjs表现层(自带json相关jar包)。注释详细,供参考。 Use ...
struts2 json extjs 完整实例 struts2 json extjs 完整实例 完整可用 无错! struts2 json extjs 完整实例 struts2 json extjs 完整实例 完整可用 无错! struts2 json extjs 完整实例 struts2 json extjs 完整...
struts2+extjs+json整合实例
extjs+struts2+hibernate+json登录程序,主要讲解struts2配置JSON与前台extjs通信,异步数据交换,很强大
Struts2+Json+ExtJS分页 资料来自互联网,及供参考学习。
Hibernate+Spring+Struts2+ExtJS开发CRUD功能
Extjs Tree + JSON + Struts2 例子
ExtJS4+Accordion+SERVLET/STRUTS2+JSON+Ext.tree.Panel实例
struts2 学习参考文档,spring 结合学习参考文档,希望对大家都有帮助
本Demo采用Struts2.1.8+Spring2.5.6(Annotation注解)+Hiberante3.3.2(Annotation注解)+ExtJS(Struts2-json)
NULL 博文链接:https://wanglu271991027.iteye.com/blog/1539242
extjs动态树struts请求数据json数据格式
EXTJS json struts2制作登陆窗口
JPA STRUTS SPRING EXTJS JSON
Struts2(json-plugin) + Spring2 + ExtJS2.2 开源网络硬盘系统
Extjs Tree + JSON + Struts2 开发war包
ExtJS+struts2+json登陆实例--源码,适合初学者
extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json数据机构,集成spring,struts例子,extjs异步树,多选树,json...
@@@extjs+struts2+json plugin的例子