如何在struts2中使用、配置ajax,json?sx:datetimepicker无法显示日历
2016-07-13 15:16
453 查看
关于sx:datetimepicker无法显示出日历的问题(注:没有发生异常,但是就是不显示日历,却能显示label),可能也和下面提到的一样,是struts2的2.2.1版本有bug。最好使用2.1.8.1或2.0.14版本。另外包版本应该一致,怎样才算一致则要仔细考虑了,什么包配什么包,哪个版本号配哪个版本号,要仔细考虑。
但是如果这样子还是无法正确显示,输出日历呢????????请参考我后面写的内容(后记)!!!!!!!!
如何在struts2中使用、应用、配置ajax,json!!!!!!!!!!!!!!
我现在越发怀疑问题是源于struts2包的版本。2.2.1版本貌似在处理dojo、ajax方面有问题,只要是
涉及到的相关编程就会出问题,比如datetimepicker不显示出日历的问题,不知道是不是它本身有
bug,难道是设计者的疏忽?
更不用说混用2.0与2.2的包的情况了,看来,以后要多留心包的版本问题了。我原以为会兼容的。
看来struts2-json-plugin-2.2.1.jar没有struts2-json-plugin-2.1.8.1.jar好用?
下载地址:
http://grepcode.com/snapshot/repo1.maven.org/maven2/org.apache.struts/struts2-json-
plugin/2.1.8.1
http://struts.apache.org/struts2/apps/struts2-showcase/dependencies.html
之后还发现了:
Caused by: The package name 'json-default' at location package - jar:file:/F:/netbeans%
20workspace/netbeans%206.9/testStruts2_json/build/web/WEB-INF/lib/struts2-json-plugin-
2.1.8.1.jar!/struts-plugin.xml:8:59 is already been used by another package at location
package - jar:file:/F:/netbeans%20workspace/netbeans%
206.9/testStruts2_json/build/web/WEB-INF/lib/jsonplugin-0.34.jar!/struts-plugin.xml:8:59
- package - jar:file:/F:/netbeans%20workspace/netbeans%
206.9/testStruts2_json/build/web/WEB-INF/lib/struts2-json-plugin-2.1.8.1.jar!/struts-
plugin.xml:8:59
仔细看了,发觉原来jsonplugin-0.34.jar没有移除干净(我之前用了jsonplugin-0.34.jar来做,后
来发现不行又导入了其他包,估计是没有记得移除或没移除干净),囧,难道是出故障了?netbean
里面根本没显示它,难道是因为我之前进行了强制关闭?
教训:以后出现连番的异常报告,要看最上方的那条。重点看Caused by。
我进到web/lib下仔细一看,吓一跳,好多重名不同版本的包。。。囧了,难道下次在netbeans里删
除包后需要“清理并生成”???是的!!!
由此还可看出,不能导入太多包,因为可能相互冲突。
另外,出现这个好像不影响运行结果:
严重: Could not find action or result
/netbeans-tomcat-status-test
There is no Action mapped for namespace / and action name netbeans-tomcat-status-test. -
[unknown location]
好了,下面是
正确的做法:
struts版本:2.1.8.1
一.需要包(2个)
json-lib-2.1.jar
struts2-json-plugin-2.1.8.1.jar
二.下载js(两个)
json.js
prototype.js
三.配置文件中添加如下代码.
Xml代码
<struts>
<package name="TestAjax" extends="json-default">
<action name="TestAjax" class="com.DreamAjaxAction">
<result type="json" />
</action>
</package>
</struts>
四.创建DreamAjaxAction
Java代码
package com;
import com.opensymphony.xwork2.ActionSupport;
public class DreamAjaxAction extends ActionSupport {
private String result;
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public String execute() throws Exception {
result = "ajax测试";
return SUCCESS;
}
}
package com;
import com.opensymphony.xwork2.ActionSupport;
public class DreamAjaxAction extends ActionSupport {
private String result;
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public String execute() throws Exception {
result = "ajax测试";
return SUCCESS;
}
} 五.测试jsp
...
<script src="../json.js" type="text/javascript"></script>
<script src="../prototype.js" type="text/javascript"></script>
<script>
function setTest() {
var url = "TestAjax .action";
new Ajax.Request(url,{method: 'post',onComplete: getTest});
}
function getTest(originalRequest){
document.getElementById("test").innerHTML=
originalRequest.responseText.parseJSON().result;
}
</script>
<input type="button" onclick="setTest()"/>
<span id="test"></span>
....
六.感谢网友提供大量学习资料.
注意:
Json-lib requires (at least) the following dependencies in your classpath:
jakarta commons-lang 2.4
jakarta commons-beanutils 1.7.0
jakarta commons-collections 3.2
jakarta commons-logging 1.1.1
ezmorph 1.0.6
好了,发现没什么问题了,可以正确运行了。
但是我决定再次尝试jsonplugin-0.34.jar,这次有了经验教训,我很小心,于是发现了新问题:
严重: Servlet.service() for servlet default threw exception
java.lang.ClassNotFoundException: com.opensymphony.xwork2.util.TextUtils
at org.apache.catalina.loader.WebappClassLoader.loadClass
(WebappClassLoader.java:1360)
at org.apache.catalina.loader.WebappClassLoader.loadClass
(WebappClassLoader.java:1206)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at com.googlecode.jsonplugin.SerializationParams.<init>
(SerializationParams.java:38)
at com.googlecode.jsonplugin.JSONResult.writeToResponse(JSONResult.java:194)
at com.googlecode.jsonplugin.JSONResult.execute(JSONResult.java:184)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult
(DefaultActionInvocation.java:362)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke
(DefaultActionInvocation.java:266)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept
(DefaultWorkflowInterceptor.java:165)
在网上查了一下:
苍天啊~~~~~~~~~~~~~Orz。。。
发现了这篇文章:
“““
jsonplugin包与Struts2包版本匹配问题
文章分类:Java编程
java.lang.NoSuchMethodError: com.opensymphony.xwork2.ActionContext.get
(Ljava/lang/String;)Ljava/lang/Object;”异常,导致该异常的是jsonplugin的jar包与Struts2的
jar包不匹配引起的。
jsonplugin-0.33.jar Struts 2 JSON Plugin 0.33 匹配 Struts 2.1.x Compatible
jsonplugin-0.32.jar Struts 2 JSON Plugin 0.32 匹配 Struts 2.0.x Compatible
异常:java.lang.NoClassDefFoundError: com/opensymphony/xwork2/util/TextUtils
原因:jsonplugin-0.34.jar 配合 struts2-core-2.1.8.1.jar 使用的情况下报的异常,但以前的项
目中jsonplugin-0.34.jar 配合 struts2-core-2.1.6.jar 使用不会出现这样的异常
解决方法:去掉jsonplugin-0.34.jar,使用struts2-json-plugin-2.1.8.1.jar 和 json-lib-
2.1.jar两个包
《《《《《
《《《《《
慢着慢着,那么拿哪个jsonplugin版本配Struts 2.2.x 呢????????????+_+
》》》》》
》》》》》
服务器没有异常,后来在客户端跟踪到错误信息如下
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean缺少jar包造成
struts2.1.6+json用到的jar包总共如下
json-lib2.1.jar
json-lib2.1.jar
json-plugin-0.33.jar
ezmorph-1.0.3.jar
commons-beanutils-1.7.0.jar
”””
忽然记起了在google上只提供了jsonplugin-0.34.jar与jsonplugin-0.32.jar的下载,再搜了一下,
发现了jsonplugin-0.33.jar的下载地址,下载时提示已过期,不过我还是下了来。
大家自己研究一下。。。
囧。。。午夜3点了。。。
后记 2010年12月1日:
以前关于struts2中的datetimepicker无法正常显示的问题。
后来我在使用另一本书上的参考代码时,留意到了书中某页有一句关键句,提示“建立web项目时必须使用j2ee1.4规范,否则会使struts2无法正常运行”。
事实上,我之前都是使用j2ee5.0,但是对于大多数项目,貌似只要不涉及struts中关于ajax的标签,都能正常运行。而此次我在netbeans中重建一个规范为j2ee1.4的项目后,发现可以运行该书中涉及到ajax的标签。基本上无大碍。
看来应该使用j2ee1.4规范,但是datetimepicker显示有些乱码,其中的“九月、十月、十一月、十二月”前面的字变成了问号,不知道为什么?
还有,书中有些参考代码涉及到json的,运行后无法达到预期效果,原因待查。
收藏于 2010-10-13
但是如果这样子还是无法正确显示,输出日历呢????????请参考我后面写的内容(后记)!!!!!!!!
如何在struts2中使用、应用、配置ajax,json!!!!!!!!!!!!!!
我现在越发怀疑问题是源于struts2包的版本。2.2.1版本貌似在处理dojo、ajax方面有问题,只要是
涉及到的相关编程就会出问题,比如datetimepicker不显示出日历的问题,不知道是不是它本身有
bug,难道是设计者的疏忽?
更不用说混用2.0与2.2的包的情况了,看来,以后要多留心包的版本问题了。我原以为会兼容的。
看来struts2-json-plugin-2.2.1.jar没有struts2-json-plugin-2.1.8.1.jar好用?
下载地址:
http://grepcode.com/snapshot/repo1.maven.org/maven2/org.apache.struts/struts2-json-
plugin/2.1.8.1
http://struts.apache.org/struts2/apps/struts2-showcase/dependencies.html
之后还发现了:
Caused by: The package name 'json-default' at location package - jar:file:/F:/netbeans%
20workspace/netbeans%206.9/testStruts2_json/build/web/WEB-INF/lib/struts2-json-plugin-
2.1.8.1.jar!/struts-plugin.xml:8:59 is already been used by another package at location
package - jar:file:/F:/netbeans%20workspace/netbeans%
206.9/testStruts2_json/build/web/WEB-INF/lib/jsonplugin-0.34.jar!/struts-plugin.xml:8:59
- package - jar:file:/F:/netbeans%20workspace/netbeans%
206.9/testStruts2_json/build/web/WEB-INF/lib/struts2-json-plugin-2.1.8.1.jar!/struts-
plugin.xml:8:59
仔细看了,发觉原来jsonplugin-0.34.jar没有移除干净(我之前用了jsonplugin-0.34.jar来做,后
来发现不行又导入了其他包,估计是没有记得移除或没移除干净),囧,难道是出故障了?netbean
里面根本没显示它,难道是因为我之前进行了强制关闭?
教训:以后出现连番的异常报告,要看最上方的那条。重点看Caused by。
我进到web/lib下仔细一看,吓一跳,好多重名不同版本的包。。。囧了,难道下次在netbeans里删
除包后需要“清理并生成”???是的!!!
由此还可看出,不能导入太多包,因为可能相互冲突。
另外,出现这个好像不影响运行结果:
严重: Could not find action or result
/netbeans-tomcat-status-test
There is no Action mapped for namespace / and action name netbeans-tomcat-status-test. -
[unknown location]
好了,下面是
正确的做法:
struts版本:2.1.8.1
一.需要包(2个)
json-lib-2.1.jar
struts2-json-plugin-2.1.8.1.jar
二.下载js(两个)
json.js
prototype.js
三.配置文件中添加如下代码.
Xml代码
<struts>
<package name="TestAjax" extends="json-default">
<action name="TestAjax" class="com.DreamAjaxAction">
<result type="json" />
</action>
</package>
</struts>
四.创建DreamAjaxAction
Java代码
package com;
import com.opensymphony.xwork2.ActionSupport;
public class DreamAjaxAction extends ActionSupport {
private String result;
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public String execute() throws Exception {
result = "ajax测试";
return SUCCESS;
}
}
package com;
import com.opensymphony.xwork2.ActionSupport;
public class DreamAjaxAction extends ActionSupport {
private String result;
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public String execute() throws Exception {
result = "ajax测试";
return SUCCESS;
}
} 五.测试jsp
...
<script src="../json.js" type="text/javascript"></script>
<script src="../prototype.js" type="text/javascript"></script>
<script>
function setTest() {
var url = "TestAjax .action";
new Ajax.Request(url,{method: 'post',onComplete: getTest});
}
function getTest(originalRequest){
document.getElementById("test").innerHTML=
originalRequest.responseText.parseJSON().result;
}
</script>
<input type="button" onclick="setTest()"/>
<span id="test"></span>
....
六.感谢网友提供大量学习资料.
注意:
Json-lib requires (at least) the following dependencies in your classpath:
jakarta commons-lang 2.4
jakarta commons-beanutils 1.7.0
jakarta commons-collections 3.2
jakarta commons-logging 1.1.1
ezmorph 1.0.6
好了,发现没什么问题了,可以正确运行了。
但是我决定再次尝试jsonplugin-0.34.jar,这次有了经验教训,我很小心,于是发现了新问题:
严重: Servlet.service() for servlet default threw exception
java.lang.ClassNotFoundException: com.opensymphony.xwork2.util.TextUtils
at org.apache.catalina.loader.WebappClassLoader.loadClass
(WebappClassLoader.java:1360)
at org.apache.catalina.loader.WebappClassLoader.loadClass
(WebappClassLoader.java:1206)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at com.googlecode.jsonplugin.SerializationParams.<init>
(SerializationParams.java:38)
at com.googlecode.jsonplugin.JSONResult.writeToResponse(JSONResult.java:194)
at com.googlecode.jsonplugin.JSONResult.execute(JSONResult.java:184)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult
(DefaultActionInvocation.java:362)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke
(DefaultActionInvocation.java:266)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept
(DefaultWorkflowInterceptor.java:165)
在网上查了一下:
苍天啊~~~~~~~~~~~~~Orz。。。
发现了这篇文章:
“““
jsonplugin包与Struts2包版本匹配问题
文章分类:Java编程
java.lang.NoSuchMethodError: com.opensymphony.xwork2.ActionContext.get
(Ljava/lang/String;)Ljava/lang/Object;”异常,导致该异常的是jsonplugin的jar包与Struts2的
jar包不匹配引起的。
jsonplugin-0.33.jar Struts 2 JSON Plugin 0.33 匹配 Struts 2.1.x Compatible
jsonplugin-0.32.jar Struts 2 JSON Plugin 0.32 匹配 Struts 2.0.x Compatible
异常:java.lang.NoClassDefFoundError: com/opensymphony/xwork2/util/TextUtils
原因:jsonplugin-0.34.jar 配合 struts2-core-2.1.8.1.jar 使用的情况下报的异常,但以前的项
目中jsonplugin-0.34.jar 配合 struts2-core-2.1.6.jar 使用不会出现这样的异常
解决方法:去掉jsonplugin-0.34.jar,使用struts2-json-plugin-2.1.8.1.jar 和 json-lib-
2.1.jar两个包
《《《《《
《《《《《
慢着慢着,那么拿哪个jsonplugin版本配Struts 2.2.x 呢????????????+_+
》》》》》
》》》》》
服务器没有异常,后来在客户端跟踪到错误信息如下
java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBean缺少jar包造成
struts2.1.6+json用到的jar包总共如下
json-lib2.1.jar
json-lib2.1.jar
json-plugin-0.33.jar
ezmorph-1.0.3.jar
commons-beanutils-1.7.0.jar
”””
忽然记起了在google上只提供了jsonplugin-0.34.jar与jsonplugin-0.32.jar的下载,再搜了一下,
发现了jsonplugin-0.33.jar的下载地址,下载时提示已过期,不过我还是下了来。
大家自己研究一下。。。
囧。。。午夜3点了。。。
后记 2010年12月1日:
以前关于struts2中的datetimepicker无法正常显示的问题。
后来我在使用另一本书上的参考代码时,留意到了书中某页有一句关键句,提示“建立web项目时必须使用j2ee1.4规范,否则会使struts2无法正常运行”。
事实上,我之前都是使用j2ee5.0,但是对于大多数项目,貌似只要不涉及struts中关于ajax的标签,都能正常运行。而此次我在netbeans中重建一个规范为j2ee1.4的项目后,发现可以运行该书中涉及到ajax的标签。基本上无大碍。
看来应该使用j2ee1.4规范,但是datetimepicker显示有些乱码,其中的“九月、十月、十一月、十二月”前面的字变成了问号,不知道为什么?
还有,书中有些参考代码涉及到json的,运行后无法达到预期效果,原因待查。
收藏于 2010-10-13
相关文章推荐
- dojo------做个简单的登录
- dojo------gridx的使用
- JQuery+Strusts1.x无刷新登录
- 使用 Python 处理 JSON 格式的数据
- XML 与 JSON 优劣对比
- VBA将excel数据表生成JSON文件
- 麻雀虽小五脏俱全 Dojo自定义控件应用
- 自己开发Dojo的建议框架
- newtonsoft.json解析天气数据出错解决方法
- vbs 解析json jsonp的方法
- Ruby和Ruby on Rails中解析JSON格式数据的实例教程
- Extjs4如何处理后台json数据中日期和时间
- C#实现将类的内容写成JSON格式字符串的方法
- JQuery ajax返回JSON时的处理方式 (三种方式)
- jquery JSON的解析方式示例介绍
- c#版json数据解析示例分享
- ASP JSON类文件的使用方法
- C# JSON格式化转换辅助类 ConvertJson
- C#实现对Json字符串处理实例
- C#实现Json转Unicode的方法