获得支柱JSON数据 [英] get JSON data from struts

查看:140
本文介绍了获得支柱JSON数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以从操作功能,使用 JSONArray.fromObject 的方法,使用AJAX接收JSON对象获取数据的一部分。但是,这是非常奇怪的是,相同的解决方案并没有豆的文件。

该错误是如下。我搜索了一个解决的三大误区。也许我需要导入 java.lang.reflect.InvocationTargetException 库,或在包中添加一些库,或者 Java中,util.data util.sql.data 。我不知道这是否会工作,即使我做了所有可能的建议以上。

错误信息:

  [00000015 SystemErrř

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

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

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

(SearchAction.java:675)
    在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
    在sun.reflect.NativeMethodAccessorImpl.invoke

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

(DelegatingMethodAccessorImpl.java:37)
    在java.lang.reflect.Method.invoke(Method.java:611)
    在org.apache.struts.actions.DispatchAction.dispatchMethod
产生的原因:java.lang.reflect.InvocationTargetExceptionat sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
    在sun.reflect.NativeMethodAccessorImpl.invoke

(NativeMethodAccessorImpl.java:60)

java.lang.IllegalArgumentException:如果产生的原因
    在java.sql.Date.getHours(Date.java:79)
    ... 69 more`]
 

解决方案

试试这个,会帮助你在Struts中2.0.14与jsonplugin-0.32.jar。

在struts.xml:

 <支柱>
     <包名称=榜样扩展=json的默认>
        <作用NAME =HelloWorld的类=example.HelloWorld>
            <结果类型=json的/>
        < /作用>
              <作用NAME =HelloWorld1级=example.HelloWorld>
            <结果名称=成功将实施例/的helloWorld.jsp< /结果>
        < /作用>
    < /包>
< /支柱>
 

动作类Helloworld.java:

 包普拉巴卡尔;

进口glb.DB;
进口的java.util.ArrayList;
进口的java.util.List;
进口的java.util.Map;

/ **
 *普拉巴卡尔
 * /
公共类的HelloWorld {


    私人列表< StateMaster> stateList =新的ArrayList< StateMaster>();
    私人列表< RegnMaster> regnList =新的ArrayList< StateMaster>();

    私人整数STATEID;
    公共整数getStateId()
    {
    返回this.stateId;
    }
    公共无效setStateId(整数STATEID)
    {
    this.stateId = STATEID;
    }
    公开名单< StateMaster> getStateList(){
        返回stateList;
    }

    公共无效setStateList(名单< StateMaster> stateList){
        this.stateList = stateList;
    }
     公共无效setRegnList(名单< RegnMaster> regnList){
        this.regnList = regnList;
    }
    公开名单< RegnMaster> getRegnList(){
        返回regnList;
    }

    公共字符串的execute()抛出异常{

        stateList = DB.getStateData()//
        如果(STATEID!= NULL)
          {
         regnList = DB.getRegnByStateId(STATEID);
          }

        // setMessage(gettext的(消息));
        返回成功;
    }

    / **
     *提供默认valuie的Message属性。
     * /

}
 

您可以直接打电话HelloWorld.action查看JSON数据,否则你可以JSON数据绑定到下面的表单元素。

JSP页面的helloWorld.jsp:

  / *
     普拉巴卡尔
  * /

<%@页面的contentType =text / html的;字符集= UTF-8%>

<%@ taglib伪preFIX =SURI =/ Struts的标签%>
<脚本>
<%@ include文件=../ JS / jQuery的-1.7.1.min.js%>
< / SCRIPT>
    < HTML>

<! -  JavaScript的插件 - >
  <脚本>
       功能getLoad(){


       。VAR STATEID = $('#国家)VAL();

$ .getJSON('HelloWorld.action',{'STATEID:STATEID},
    功能(数据){

           VAR divisionList =(data.regnList);

                VAR选项= $(#REGN);
                options.find(选项)
    卸下摆臂()
    。结束();
     options.append($(<选项/>").val("-1").text("--Select--));
$每个(divisionList,函数(){

    options.append($(<选项/>").val(this.regnId).text(this.regnName));
});
    }
);}
   < / SCRIPT>

<! - 的jQuery UI的相关脚本 - >

    <身体GT;
        国家名单,其中,S:选择名称=STATEID列表=stateListID =状态listKey =STATEID的onchange =getLoad()listValue =Statename的headerKey =0headerValue = - 选择 - />
        REGN名单,其中,S:选择名称=regnId列表=regnListlistKey =regnIdID =REGNlistValue =regnNameheaderKey =0headerValue = - 选择 - />
    < /身体GT;
< / HTML>
 

编码快乐:)

I can get part of data from the Action function, by using the JSONArray.fromObject method, using AJAX to receive the json object. But it is very strange that the same solution did not work with beans files.

The Error is below. I searched for a solution to the three main errors. Maybe I need to import the java.lang.reflect.InvocationTargetException library, or add some libs in a package, or maybe Java,util.data conflicts with util.sql.data. I am not sure if it will work even I made all of the potential suggestions above.

Error info:

 [   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`]

解决方案

Try this, will help you in Struts 2.0.14 with jsonplugin-0.32.jar.

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>

action class 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.
     */

}

You can directly call HelloWorld.action to view the JSON data or else you can bind the JSON data to a form element below.

JSP page 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>

Happy coding :)

这篇关于获得支柱JSON数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆