struts2处理Ajax JSON时的一些东东

org.apache.struts2.json.JSONInterceptor.intercept(JSONInterceptor.java:172)

struts 2有一个处理json请求的插件:

处理流程:

原图地址:

http://cqjava.iteye.com/upload/picture/pic/48651/47962312-47c6-3a67-a7f6-795e666ba572.gif

 

struts.xml中的配置: 

  1. <package name="default" extends="json-default">  

<action name="NewsAjax" class="com.shangkang.action.NewsAction">
         <result name ="updateNewsAjax" type="json">
          <param name="excludeProperties">.*</param>
          <param name="noCache">true</param>
    <param name="contentType">text/html</param>
         </result>
         <result name ="addNewsAjax" type="json">
          <param name="excludeProperties">.*</param>
          <param name="noCache">true</param>
    <param name="contentType">text/html</param>
         </result>
         <result name ="deleteNewsAjax" type="json">
          <param name="excludeProperties">.*</param>
          <param name="noCache">true</param>
       <param name="contentType">text/html</param>         
         </result>
        </action>

 

默认返回json的数据的时候会调用Action中的所有getXXX()方法(推荐:Action中除属性的get方法外,不要使用getXXX方法充当Action执行的方法。)。

 <param name="excludeProperties">.*</param>  //输出结果需要剔除的属性值,也支持正则表达式匹配属性名,可以用“,”分割填充多个正则表达式

过滤所有属性  之所有这么写:是因为自定义了个struts2的拦截器extends StaticParametersInterceptor 这个里面通过捕获异常进行如下处理

 String msg = "{errorMsg:'" + e.getMessage() + "'}";
 response.setContentType("text/xml; charset=UTF-8");
 response.setCharacterEncoding("UTF-8");  response.setContentLength(msg.getBytes("UTF-8").length);
 PrintWriter out = response.getWriter();
  out.print(msg);

因此在客户端js中可以通过判断返回data的errorMsg是否存在来判断是否执行Success

success:function(data){
      var dt = eval('('+ data +')');
      if(dt.errorMsg)
       alert(dt.errorMsg);
      else{
             alert('业务操作成功!');
      }

 


<param name="noCache">true</param>
 <param name="contentType">text/html</param>    当返回成功时定义返回类型。否则有可能当成下载方法处理

<param name="root">listEutDto</param>     返回指定的属性  还可以细化到属性对象下的属性

  1. <param name="excludeNullProperties">true</param>   去除为null的属性。
  2. <param name="ignoreHierarchy">false</param>  是否忽略父类中的属性

  3.  

      <param name="includeProperties">person.*, person\.name</param>  

     

     

    请求的URL为:/NewsAjax!****NewsAjax.action?******;   前面为Action名字,后面为方法名字。 方法的名字不需要在struts.xml中进行配置。

     

     

     

     

     

     

     

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 1
      评论
    评论 1
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值