2012-06-14 5 views
0

JSONArray.fromObject 메서드를 사용하여 AJAX를 사용하여 json 개체를 수신하는 동작 함수에서 데이터의 일부를 가져올 수 있습니다. 그러나 동일한 솔루션이 beans 파일에서 작동하지 않는다는 것은 매우 이상합니다.struts에서 JSON 데이터 가져 오기

오류는 다음과 같습니다. 세 가지 주요 오류에 대한 해결책을 모색했습니다. 어쩌면 java.lang.reflect.InvocationTargetException 라이브러리를 가져 오거나 패키지에 libs를 추가해야하거나 Java,util.datautil.sql.data과 충돌 할 수 있습니다. 나는 그것이 위의 모든 잠재적 인 제안을했다 할지라도 그것이 효과가 있을지 확신하지 못한다.

오류 정보 :

[ 00000015 SystemErr  R 

net.sf.json.JSONException: java.lang.reflect.InvocationTargetException 
    at net.sf.json.JSONObject.defaultBeanProcessing 

(JSONObject.java:818) 
    at net.sf.json.JSONObject._fromBean(JSONObject.java:699) 
    at net.sf.json.JSONObject.fromObject(JSONObject.java:172) 
    at net.sf.json.AbstractJSON._processValue(AbstractJSON.java:274) 
    at net.sf.json.JSONObject._processValue(JSONObject.java:2655) 
    at net.sf.json.JSONObject.processValue(JSONObject.java:2721) 
    at net.sf.json.JSONObject.setInternal(JSONObject.java:2736) 
    at net.sf.json.JSONObject.setValue(JSONObject.java:1424) 
    at net.sf.json.JSONObject.defaultBeanProcessing 

(JSONObject.java:765) 
    at net.sf.json.JSONObject._fromBean(JSONObject.java:699) 
    at net.sf.json.JSONObject.fromObject(JSONObject.java:172) 
    at net.sf.json.AbstractJSON._processValue(AbstractJSON.java:274) 
    at net.sf.json.JSONArray._processValue(JSONArray.java:2513) 
    at net.sf.json.JSONArray.processValue(JSONArray.java:2538) 
    at net.sf.json.JSONArray.addValue(JSONArray.java:2525) 
    at net.sf.json.JSONArray._fromCollection(JSONArray.java:1056) 
    at net.sf.json.JSONArray.fromObject(JSONArray.java:123) 
    at net.sf.json.JSONArray.fromObject(JSONArray.java:105) 
    at 

(SearchAction.java:675) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke 

(NativeMethodAccessorImpl.java:60) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke 

(DelegatingMethodAccessorImpl.java:37) 
    at java.lang.reflect.Method.invoke(Method.java:611) 
    at org.apache.struts.actions.DispatchAction.dispatchMethod 
Caused by: java.lang.reflect.InvocationTargetExceptionat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke 

(NativeMethodAccessorImpl.java:60) 

Caused by: java.lang.IllegalArgumentException 
    at java.sql.Date.getHours(Date.java:79) 
    ... 69 more`] 
+0

가 도움이 힘들 것 자세한 내용을 모른 채. 첫 번째 줄은 JRE 문제처럼 의심 스럽지만, 우리는 당신이 무엇을 직렬화하려고하는지, 어떻게 또는 무엇을하려고하는지 알지 못합니다. –

답변

2

는,이 시도 jsonplugin-0.32.jar와 스트럿 2.0.14에 도움이 될 것입니다.

struts.xml :

<struts> 
    <package name="example" extends="json-default"> 
     <action name="HelloWorld" class="example.HelloWorld" > 
      <result type="json" /> 
     </action> 
       <action name="HelloWorld1" class="example.HelloWorld" > 
      <result name="success" >example/HelloWorld.jsp</result> 
     </action> 
    </package> 
</struts> 

액션 클래스 Helloworld.java :

package prabhakar; 

import glb.DB; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Map; 

/** 
* Prabhakar 
*/ 
public class HelloWorld { 


    private List<StateMaster> stateList= new ArrayList<StateMaster>(); 
    private List<RegnMaster> regnList= new ArrayList<StateMaster>(); 

    private Integer stateId; 
    public Integer getStateId() 
    { 
    return this.stateId; 
    } 
    public void setStateId(Integer stateId) 
    { 
    this.stateId=stateId; 
    } 
    public List<StateMaster> getStateList() { 
     return stateList; 
    } 

    public void setStateList(List<StateMaster> stateList) { 
     this.stateList = stateList; 
    } 
    public void setRegnList(List<RegnMaster> regnList) { 
     this.regnList = regnList; 
    } 
    public List<RegnMaster> getRegnList() { 
     return regnList; 
    } 

    public String execute() throws Exception { 

     stateList=DB.getStateData()// 
     if(stateId !=null) 
      { 
     regnList=DB.getRegnByStateId(stateId); 
      } 

     //setMessage(getText(MESSAGE)); 
     return "success"; 
    } 

    /** 
    * Provide default valuie for Message property. 
    */ 

} 
사용자가 직접 JSON 데이터를 볼 수 HelloWorld.action를 호출 할 수 있습니다 그렇지 않으면 당신은에 JSON 데이터를 바인딩 할 수 있습니다

아래 양식 요소.

JSP 페이지 HelloWorld.jsp를 :

/* 
    Prabhakar 
    */ 

<%@ page contentType="text/html; charset=UTF-8" %> 

<%@ taglib prefix="s" uri="/struts-tags" %> 
<script> 
<%@include file="../js/jquery-1.7.1.min.js"%> 
</script> 
    <html> 

<!-- JavaScript Plugins --> 
    <script> 
     function getLoad(){ 


     var stateId = $('#state').val(); 

$.getJSON('HelloWorld.action', {'stateId': stateId}, 
    function(data) { 

      var divisionList = (data.regnList); 

       var options = $("#regn"); 
       options.find('option') 
    .remove() 
    .end(); 
    options.append($("<option />").val("-1").text("--Select--")); 
$.each(divisionList, function() { 

    options.append($("<option />").val(this.regnId).text(this.regnName)); 
}); 
    } 
);} 
    </script> 

<!-- jQuery-UI Dependent Scripts --> 

    <body> 
     State List <s:select name="stateId" list="stateList" id="state" listKey="stateId" onchange="getLoad()" listValue="stateName" headerKey="0" headerValue="--select--" /> 
     Regn List <s:select name="regnId" list="regnList" listKey="regnId" id="regn" listValue="regnName" headerKey="0" headerValue="--select--" /> 
    </body> 
</html> 

해피 코딩 :)

관련 문제