struts2中使用ajax的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xingzhishen/article/details/83143104

一般步骤:

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对于服务端产生错误的处理是将产生错误的模版页面返回给客户端并返回客户端。

猜你喜欢

转载自blog.csdn.net/xingzhishen/article/details/83143104
今日推荐