如题,我们开发的架构是采用Struts2 + jQuery,所以就使用了JSON数据进行传输。现在我要在Struts.xml中处理异常,例如我在struts.xml中有如下的一个Action的配置 <action name="showExamList"
class="org.cst.de.action.examAppearance.ListExamineesExamAction">
<result type="json" name="success" />
<result type="json" name="exception">
<param name="root">
"Exception Information"
                </param>
</result>
<exception-mapping result="exception"
exception="java.lang.NullPointerException" />
</action>这个Action我映射了一个局部异常NullPointerException到一个名为“exception”的result,现在我想在excepion这个result中返回一个JSON结果给前台的jQUery,但是我试过将"Exception Information"这串字符串改为如
{"exceptionId":"1", "exceptionMsg":"No Login"}
这样的JSON数据格式,但是前台显示获得的JSON数据是null。
但是,如果我用引号括着这串数据,前台获得的数据又会在两边加上引号导致无法解释请问,这串JSON结果我应该怎样设置才能正确返回?
前提是不能在Action中添加任何额外代码!

解决方案 »

  1.   

       为什么 type 要用json类型呢?加个中括号到外面呢?
      

  2.   

    因为前台是用jQuery的如果我出现异常,我想将对应的信息传回前台,但前台这里只能接收JSON格式的数据,所以就只能用json的type了
      

  3.   

    struts.xml 内也不用别的 属性就可以呀
      

  4.   

    请参照我的一篇笔记,Liferay5.2.3 + Struts2.1.8.1 + Open Flash Chart 2 + JQuery1.4.2 笔记
    https://www.chinasb.org/archives/2010/09/321.shtml
      

  5.   

    其实不用这样写的,<action name="showExamList"
                class="org.cst.de.action.examAppearance.ListExamineesExamAction">
                        </action>
    这样就可以了,在java端就在包装好的json数据扔到前台就可以了。
      

  6.   

    当然还要看你前台是如何解析json数据的,可能你解析的不对,导致数据无显示
      

  7.   

    直接用AJAX请求ACTION 当成普通的操作就OK 不用配置太复杂
      

  8.   

    现在我就是前台的AJAX直接请求后台的ACTION,但是异常处理代码我没在ACTION里面写
    如果ACTION一旦发生异常,前台将不会获取到任何的数据
    我现在就是想当ACTION发生异常的时候,利用struts的异常处理机制,在struts.xml中配置捕获一个异常
    由于前台是AJAX的,我捕获异常后当然要返回信息告诉前台ACTION发生了什么错误
    而和前台通讯的方式只有使用JSON数据通讯
    所以我要在异常对应的结果里面配置一串JSON格式数据以便告诉前台发生了什么错误啊不知道这样说大家明不明白我的意思?
      

  9.   

    没用过配置文件来捕获异常,但是你在ACTION的调用方法中try catch一下不就行了么?
      

  10.   

    我就是不想在Action内处理这些异常
      

  11.   

    我现在也是在想这个问题
    ajax根本不会理会action中抛出的异常
    好郁闷