您的位置:首页 > 编程语言 > Java开发

如何在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts dr dojo json