一般步骤:
1,使用struts2-json-plugin-2.1.8.1.jar,导入或者依赖这个jar。
2,这个jar包中的struts-plugin.xml,提供了json的相关配置。
<struts>
<package name="json-default" extends="struts-default">
<result-types>
<result-type name="json" class="org.apache.struts2.json.JSONResult"/>
</result-types>
<interceptors>
<interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/>
<interceptor name="jsonValidation" class="org.apache.struts2.json.JSONValidationInterceptor"/>
<!-- Sample JSON validation stack -->
<interceptor-stack name="jsonValidationWorkflowStack">
<interceptor-ref name="basicStack"/>
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
<interceptor-ref name="jsonValidation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack>
</interceptors>
</package>
</struts>
在需要使用ajax的地方的相关struts的配置文件中,包继承json-default,result的type为json。比如
<package name="userjson" namespace="/" extends="json-default">
<action name="userJSONAction_*" method="{1}" class="userAction">
<result type="json"></result>
</action>
</package>
3,在action中,对于需要返回的json字符串定义私有属性,并添加get方法。比如,private String msg;public String getMsg(){return this.msg;}
需要注意的问题,这个也是struct2使用ajax的缺点。不管采用$.post或者$.ajax方法,在客户端无法捕获服务器端产生的异常或错误。原因是,structs2对于服务端产生错误的处理是将产生错误的模版页面返回给客户端并返回客户端。