当前位置:编程学习 > JAVA >>

struts2 + Jquery+json 配出出错 , 大家帮看看吧



 我的运行没有错误, 就是加上了Json 的配置之后就有错误了, 启动tomcat 就报错误, 如果把红色不分区掉就正常的运行,加上就报错误, 下面是错误, 帮我看看吧, 谢谢

<action name="irjsonProv" class="rjsonActImpl" method="JsonProvince">            
            <result type="json"></result>
</action>


错误如下:
2012-08-17 12:13:37,953 [main] ERROR org.apache.struts2.dispatcher.Dispatcher - Dispatcher initialization failed
Unable to load configuration. - action - file:/E:/hanwang-tomcat-6.0.30/webapps/speed/WEB-INF/classes/com/user/speed/lucks/config/struts-ciayongsong.xml:42:72
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:69)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:371)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:415)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4038)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4692)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)
at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: Error building results for action irjsonProv in namespace  - action - file:/E:/hanwang-tomcat-6.0.30/webapps/speed/WEB-INF/classes/com/user/speed/lucks/config/struts-ciayongsong.xml:42:72
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:378)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:479)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:275)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:204)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
... 31 more
Caused by: There is no result type defined for type 'json' mapped with name 'success'.  Did you mean 'json'? - result - file:/E:/hanwang-tomcat-6.0.30/webapps/speed/WEB-INF/classes/com/user/speed/lucks/config/struts-ciayongsong.xml:43:33
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.buildResults(XmlConfigurationProvider.java:632)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:376)
... 36 more
2012-8-17 12:13:37 org.apache.catalina.core.StandardContext filterStart
--------------------编程问答-------------------- 严重: Exception starting filter struts2
Unable to load configuration. - action - file:/E:/hanwang-tomcat-6.0.30/webapps/speed/WEB-INF/classes/com/user/speed/lucks/config/struts-ciayongsong.xml:42:72
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:428)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4038)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4692)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)
at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: Unable to load configuration. - action - file:/E:/hanwang-tomcat-6.0.30/webapps/speed/WEB-INF/classes/com/user/speed/lucks/config/struts-ciayongsong.xml:42:72
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:69)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:371)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:415)
... 29 more
Caused by: Error building results for action irjsonProv in namespace  - action - file:/E:/hanwang-tomcat-6.0.30/webapps/speed/WEB-INF/classes/com/user/speed/lucks/config/struts-ciayongsong.xml:42:72
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:378)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:479)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:275)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:204)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
... 31 more
Caused by: There is no result type defined for type 'json' mapped with name 'success'.  Did you mean 'json'? - result - file:/E:/hanwang-tomcat-6.0.30/webapps/speed/WEB-INF/classes/com/user/speed/lucks/config/struts-ciayongsong.xml:43:33
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.buildResults(XmlConfigurationProvider.java:632)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:376)
... 36 more
2012-8-17 12:13:37 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2012-8-17 12:13:37 org.apache.catalina.core.StandardContext start
严重: Context [/speed] startup failed due to previous errors
2012-8-17 12:13:37 org.apache.catalina.core.ApplicationContext log
信息: Closing Spring root WebApplicationContext
2012-8-17 12:13:38 org.apache.catalina.core.ApplicationContext log
信息: Shutting down log4j
2012-8-17 12:13:38 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
严重: The web application [/speed] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
2012-8-17 12:13:38 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
严重: The web application [/speed] appears to have started a thread named [Timer-1] but has failed to stop it. This is very likely to create a memory leak.
2012-8-17 12:13:38 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
严重: The web application [/speed] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@738dcb]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@6212dd]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
2012-8-17 12:13:38 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
严重: The web application [/speed] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@c47498]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@1c2dad7]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
log4j:ERROR LogMananger.repositorySelector was null likely due to error in class reloading, using NOPLoggerRepository. --------------------编程问答-------------------- 这个是方法

/// 查询所有的省 -直辖市 - 区
public String JsonProvince(){
String hql="SELECT u FROM GAJSON GROUP BY u.rname";
try {
lists = rjsonSevDao.queryListByqueryString(hql);
 if (lists.size() > 0) {
            StringBuilder sb = new StringBuilder(); 
            sb.append("[");
            for (Gajson jso : lists) { 
                sb.append("{\"ID\":\"");
                sb.append(jso.getRname());
                sb.append("\",\"Name\":\"");
                sb.append(jso.getRname());
                sb.append("\"}");
                if (lists.size() > 0) {
                    sb.append(",");
                }
            }
            sb.append("]");
            proString = sb.toString();
            System.out.println(proString + "-------------"); 
        }

return ActionSupport.SUCCESS;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return ActionSupport.ERROR;

} --------------------编程问答--------------------  spring  application-mians.xml

<bean id="rjsonActImpl" class="com.user.speed.lucks.acti.RjsonManagerAct" >
<property name="rjsonSevDao" ref="rjsonSevDao"></property>
</bean> --------------------编程问答-------------------- 关于Struts配置的问题,希望楼主看下以下两篇文章:http://kingxss.iteye.com/blog/1622455 http://www.vijun.com/web/struts/2012/02/5f84f4d9355071010135650850770098.html,另外你返回的json串应该不需要你自己转换,Struts插件已经帮你转换了,而且即使要手动转换也不要这样拼接字符串,用线程的开源框架就能搞定,引入几个jar包就行了。希望以上说的能帮上楼主。 --------------------编程问答-------------------- 错误:
Caused by: There is no result type defined for type 'json' mapped with name 'success'.

在JsonProvince方法中,
   return ActionSupport.SUCCESS;

但在action配置中,result并没有配置SUCCESS

<action name="irjsonProv" class="rjsonActImpl" method="JsonProvince"> 
    <result type="json"></result>
</action>

另外,return ActionSupport.ERROR;对应的result type=error的也没有。 --------------------编程问答-------------------- 错了,应该是name
<action name="irjsonProv" class="rjsonActImpl" method="JsonProvince"> 
<result name="success">xxx</result>
</action> --------------------编程问答-------------------- 正解。用json的时候 一般是然后写到respones中,返回空
引用 5 楼  的回复:
错误:
Caused by: There is no result type defined for type 'json' mapped with name 'success'.

在JsonProvince方法中,
   return ActionSupport.SUCCESS;

但在action配置中,result并没有配置SUCCESS

XML code
<acti……
--------------------编程问答--------------------
引用 5 楼  的回复:
错误:
Caused by: There is no result type defined for type 'json' mapped with name 'success'.

在JsonProvince方法中,
   return ActionSupport.SUCCESS;

但在action配置中,result并没有配置SUCCESS

XML code
<acti……

<action name="irjsonProv" class="rjsonActImpl" method="JsonProvince"> 
<result name="success" type="json"></result>
</action>

我这样配置也出错, 我试过了,    
  --------------------编程问答-------------------- 楼主你是否引入了json用到的插件包 struts2-json-plugin-2.3.4.jar  
建议直接使用ajax访问action 通过gson将由hibernate查询到的对象转换成字符串
直接response到客户端就可以了,至于返回值直接返回null,这个歌访问servlet是一样的

看你上面的代码你是拼接字符串来构建json的,也是可以的 --------------------编程问答-------------------- 看一下,是不是同时有struts2-json-plugin.jar 和 jsonplugin.jar

他们会有冲突。 --------------------编程问答--------------------
引用 10 楼  的回复:
看一下,是不是同时有struts2-json-plugin.jar 和 jsonplugin.jar

他们会有冲突。


jsonplugin.jar 这个包, 我没有加载

现在问题解决了 , 

其他的我没有变, 

 我就包配置json的那个json 在struts.xml 单独放到一个package 就可以了

<package name="json" extends="struts-default,json-default" >  
<!-- 查询所有的  省 直辖市  区  -->
        <action name="irjsonProv" class="rjsonActImpl" method="json">  
            <result type="json">  
                <!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 -->  
                <param name="root">dataMap</param>  
            </result>  
        </action>  
    </package>  

  Action .java
public String json() {
// dataMap中的数据将会被Struts2转换成JSON字符串,所以这里要先清空其中的数据
dataMap = new HashMap<String, Object>();
Gajson user = new Gajson();
user.setRname("张三q");
user.setRkind("123q");
user.setRname("张三");
user.setRkind("123");
dataMap.put("user", user);
// 放入一个是否操作成功的标识
dataMap.put("success", true);
// 返回结果
return SUCCESS;
}


参考 这个来的,      http://kingxss.iteye.com/blog/1622455    
--------------------编程问答--------------------
引用 9 楼  的回复:
楼主你是否引入了json用到的插件包 struts2-json-plugin-2.3.4.jar  
建议直接使用ajax访问action 通过gson将由hibernate查询到的对象转换成字符串
直接response到客户端就可以了,至于返回值直接返回null,这个歌访问servlet是一样的

看你上面的代码你是拼接字符串来构建json的,也是可以的


这个包有, 谢谢,


建议直接使用ajax访问action 通过gson将由hibernate查询到的对象转换成字符串
直接response到客户端就可以了,至于返回值直接返回null,这个歌访问servlet是一样的

这个能否给个例子?
--------------------编程问答-------------------- 额,给你个标准的列子,gson你可以去http://code.google.com/p/google-gson/ 下载,可以在java object和json相互转换的我觉得还可以比较方便

package com.xiaobao.action.json;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.google.gson.Gson;
import com.opensymphony.xwork2.ActionSupport;
import com.xiaobao.domain.People;

public class GetJsonAction extends ActionSupport
{
private String name;

public String getName()
{
return name;
}

public void setName(String name)
{
this.name = name;
}

@Override
public String execute() throws Exception
{
People people = new People();

people.setId(1);
people.setName(name);
people.setAge(20);
people.setAddress("yichang");

Gson gson = new Gson();

String result = gson.toJson(people);

HttpServletResponse response = ServletActionContext.getResponse();

response.setContentType("application/json; charset=utf-8");
response.setHeader("cache-control", "no-cache"); 

PrintWriter out = response.getWriter();

out.print(result);

out.flush();
out.close();

return null;
}
}


People 类这个你自己定义下吧,
配置就很简单了

<action name="getJsonAction" class="com.xiaobao.action.json.GetJsonAction">

</action>

前台的解析不用说了吧 和你上面自己的一样解析 通过gson你可以直接将数组直接转成json 当然上面也说了object和json的相互转换 你最好是结合hibernate查询直接查出实体对象直接将其转成json 返回给客户端 --------------------编程问答--------------------
引用 4 楼  的回复:
关于Struts配置的问题,希望楼主看下以下两篇文章:http://kingxss.iteye.com/blog/1622455 http://www.vijun.com/web/struts/2012/02/5f84f4d9355071010135650850770098.html,另外你返回的json串应该不需要你自己转换,Struts插件已经帮你转换了,而且即使要手动转换也不要这样拼接字符串……

非常有用,谢谢! --------------------编程问答-------------------- type=json 

result的name属性要和返回的属性名一样 --------------------编程问答--------------------
引用 5 楼  的回复:
错误:
Caused by: There is no result type defined for type 'json' mapped with name 'success'.

在JsonProvince方法中,
   return ActionSupport.SUCCESS;

但在action配置中,result并没有配置SUCCESS

XML code
<acti……

5楼正解。 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
引用 4 楼  的回复:
关于Struts配置的问题,希望楼主看下以下两篇文章:http://kingxss.iteye.com/blog/1622455 http://www.vijun.com/web/struts/2012/02/5f84f4d9355071010135650850770098.html,另外你返回的json串应该不需要你自己转换,Struts插件已经帮你转换了,而且即使要手动转换也不要这样拼接字符……



挺好的,  --------------------编程问答--------------------
引用 13 楼  的回复:
额,给你个标准的列子,gson你可以去http://code.google.com/p/google-gson/ 下载,可以在java object和json相互转换的我觉得还可以比较方便Java code

package com.xiaobao.action.json;

import java.io.PrintWriter;

import javax.servlet.http.Http……

js 这样写就可以判断出来了 ,  太感谢了
<script type="text/javascript">
var gsonTOjson = function(){

$.getJSON("getJsonAction.action",function(resJson){

$.each(resJson, function(idx, item) {
alert(idx+":"+item);
});

});
}
</script>
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,