java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:451)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:753)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:506)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1770)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Hibernate: select mood0_.id as id5_, mood0_.content as content5_, mood0_.indate as indate5_, mood0_.user_id as user4_5_ from mood mood0_ where mood0_.id=19
Hibernate: select users0_.id as id10_6_, users0_.assn as assn10_6_, users0_.birth as birth10_6_, users0_.book as book10_6_, users0_.cartoon as cartoon10_6_, users0_.doing as doing10_6_, users0_.email as email10_6_, users0_.game as game10_6_, users0_.homeCity_id as homeCity31_10_6_, users0_.homePro_id as homePro32_10_6_, users0_.interest as interest10_6_, users0_.juniorYear as juniorYear10_6_, users0_.level as level10_6_, users0_.localCity_id as localCity33_10_6_, users0_.localPro_id as localPro34_10_6_, users0_.locked as locked10_6_, users0_.loginDate as loginDate10_6_, users0_.mobile as mobile10_6_, users0_.movie as movie10_6_, users0_.msn as msn10_6_, users0_.music as music10_6_, users0_.name as name10_6_, users0_.oicq as oicq10_6_, users0_.online as online10_6_, users0_.photo as photo10_6_, users0_.primaryYear as primary22_10_6_, users0_.pwd as pwd10_6_, users0_.registerDate as registe24_10_6_, users0_.sex as sex10_6_, users0_.sport as sport10_6_, users0_.techSchYear as techSch27_10_6_, users0_.tel as tel10_6_, users0_.visited as visited10_6_, users0_.website as website10_6_, city1_.id as id2_0_, city1_.name as name2_0_, city1_.province_id as province3_2_0_, province2_.id as id6_1_, province2_.country_id as country3_6_1_, province2_.name as name6_1_, province3_.id as id6_2_, province3_.country_id as country3_6_2_, province3_.name as name6_2_, country4_.id as id3_3_, country4_.name as name3_3_, city5_.id as id2_4_, city5_.name as name2_4_, city5_.province_id as province3_2_4_, province6_.id as id6_5_, province6_.country_id as country3_6_5_, province6_.name as name6_5_ from users users0_ left outer join city city1_ on users0_.homeCity_id=city1_.id left outer join province province2_ on city1_.province_id=province2_.id left outer join province province3_ on users0_.homePro_id=province3_.id left outer join country country4_ on province3_.country_id=country4_.id left outer join city city5_ on users0_.localCity_id=city5_.id left outer join province province6_ on users0_.localPro_id=province6_.id where users0_.id=?
<img src='./images/emotions/1.gif' /><img src='./images/emotions/2.gif' /><img src='./images/emotions/3.gif' />jnytjyj<img src='./images/emotions/2.gif' />娃哈哈
Hibernate: select provinces0_.country_id as country3_1_, provinces0_.id as id1_, provinces0_.id as id6_0_, provinces0_.country_id as country3_6_0_, provinces0_.name as name6_0_ from province provinces0_ where provinces0_.country_id=?
2012-10-24 16:58:11,593 ERROR (freeer.runtime:96) - Method public java.lang.String org.apache.commons.lang.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on net.sf.json.JSONException: There is a cycle in the hierarchy!Method public java.lang.String org.apache.commons.lang.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on net.sf.json.JSONException: There is a cycle in the hierarchy!
The problematic instruction:
----------
==> ${msgs[0][0]} [on line 76, column 25 in org/apache/struts2/dispatcher/error.ftl]
----------Java backtrace for programmers:
----------
freeer.template.TemplateModelException: Method public java.lang.String org.apache.commons.lang.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on net.sf.json.JSONException: There is a cycle in the hierarchy!
at freeer.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130)
at freeer.ext.beans.SimpleMethodModel.get(SimpleMethodModel.java:138)
at freeer.core.DynamicKeyName.dealWithNumericalKey(DynamicKeyName.java:111)
at freeer.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:90)
at freeer.core.Expression.getAsTemplateModel(Expression.java:89)
at freeer.core.Expression.getStringValue(Expression.java:93)
at freeer.core.DollarVariable.accept(DollarVariable.java:76)
at freeer.core.Environment.visit(Environment.java:210)
at freeer.core.MixedContent.accept(MixedContent.java:92)
at freeer.core.Environment.visit(Environment.java:210)
at freeer.core.IfBlock.accept(IfBlock.java:82)
at freeer.core.Environment.visit(Environment.java:210)
at freeer.core.IfBlock.accept(IfBlock.java:82)
at freeer.core.Environment.visit(Environment.java:210)
at freeer.core.MixedContent.accept(MixedContent.java:92)
at freeer.core.Environment.visit(Environment.java:210)
at freeer.core.Environment.process(Environment.java:190)
at freeer.template.Template.process(Template.java:237)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:749)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:506)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1770)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NullPointerException
at freeer.ext.beans.SimpleMemberModel.unwrapArguments(SimpleMemberModel.java:85)
at freeer.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106)
... 41 more

解决方案 »

  1.   

    感觉是转json的时候出错了 但不晓得怎么弄了
      

  2.   

    那应该不行,你freeer里取的对象必须在会话里面能找到,你如果请求的是ajax方法就不要用freeer标签去取值,用js赋值会好一点,或者你请求一个普通方法把值放到会话中,返回到你的ftl
      

  3.   

    不是json的问题,应该是你msgs这个对象不能通过ajax返回,必须放到会话里,比如说request.setAttribute("msgs",object);
      

  4.   


    话说我整个工程里面都没有msgs这个对象
      

  5.   

    我看你错误信息里面用了freeer取msgs啊
    ${msgs[0][0]} [on line 76, column 25 in org/apache/struts2/dispatcher/error.ftl]
    如果没有${msgs[0][0]} [on line 76, column 25 in org/apache/struts2/dispatcher/error.ftl]肯定出错啊
      

  6.   

    莫非是除了错转到error.ftl页面?
      

  7.   

    你问我我怎么知道,我是从你贴出来 的错误里面找到的,error.ftl是一个freeer模板啊
      

  8.   

    你先在action页面把你需要的数据拼装成json数组返回不就好了?