실체 집합
그런데 요즘 쓸 때 문제가 생겨서 돌리는 과정에서 자꾸 실패!!나중에 검색한 결과 원래는hibernate를 사용하여 데이터베이스를 조작했기 때문에 json-lib는 이런 결과 대상을 처리할 때 이상이 존재했다.아래 그림과 같이 이것은 이상하다.
Struts Problem Report
Struts has detectedan unhandled exception:
Messages:
FreeMarker template error!
Methodpublic java.lang.Stringorg.apache.commons.lang.exception.NestableRuntimeException.getMessage(int)threw an exception when invoked on net.sf.json.JSONException:java.lang.reflect.InvocationTargetException The problematic instruction: ---------- ==> ${msgs[0][0]} [on line 76, column 25 inorg/apache/struts2/dispatcher/error.ftl] ----------
Javabacktrace forprogrammers: ---------- freemarker.template.TemplateModelException: Method public java.lang.Stringorg.apache.commons.lang.exception.NestableRuntimeException.getMessage(int)threw an exception when invoked on net.sf.json.JSONException:java.lang.reflect.InvocationTargetException atfreemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130) at freemarker.ext.beans.SimpleMethodModel.get(SimpleMethodModel.java:138) atfreemarker.core.DynamicKeyName.dealWithNumericalKey(DynamicKeyName.java:111) at freemarker.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:90) atfreemarker.core.Expression.getAsTemplateModel(Expression.java:89) at freemarker.core.Expression.getStringValue(Expression.java:93) atfreemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:209) atfreemarker.core.MixedContent.accept(MixedContent.java:92) atfreemarker.core.Environment.visit(Environment.java:209) atfreemarker.core.IfBlock.accept(IfBlock.java:82) atfreemarker.core.Environment.visit(Environment.java:209) atfreemarker.core.IfBlock.accept(IfBlock.java:82) atfreemarker.core.Environment.visit(Environment.java:209) at freemarker.core.MixedContent.accept(MixedContent.java:92) atfreemarker.core.Environment.visit(Environment.java:209) atfreemarker.core.Environment.process(Environment.java:189) atfreemarker.template.Template.process(Template.java:237) atorg.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:748) atorg.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505) atorg.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) atorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) atorg.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) atorg.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) atorg.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) atjava.lang.Thread.run(Thread.java:662) Caused by: java.lang.NullPointerException atfreemarker.ext.beans.SimpleMemberModel.unwrapArguments(SimpleMemberModel.java:85) atfreemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106) ... 37 more
한 꿰미의 진심은 알아볼 수 없지만, 키워드를 찾아서 찾아보면 잘못이 어디에 있는지 알 수 있다.그런데 한참 동안 찾았어요...
솔루션:
원래 제이슨 꼬치를 돌렸는데 그냥 이렇게 하면 돼요.
JSONArray arvert = JSONArray.fromObject( );
json =arvert.toString();
이제 두 마디 더 해야 돼.
JsonConfigjsonConfig=new JsonConfig();
jsonConfig.setExcludes(newString[]{"handler","hibernateLazyInitializer"});
JSONArrayarvert = JSONArray.fromObject ,jsonConfig);
json = arvert.toString();
실체전 json도 이런 방법으로 해결할 수 있다.
이 프로젝트를 처음 접했을 때 자바는 별로 접해 보지 않았기 때문에 문제에 부딪히면 머리를 쓸 수 없었고 나중에 부딪히는 문제가 점점 많아지면서 점점 두려움이 없어졌다. 왜냐하면 해결 방법이 있다는 것을 알고 해결이 점점 빨라지고 숙련되기 때문이다. 이것은 마치 성장하는 과정과 같기 때문이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.