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

struts2.1.8+spring2.5+hibernate3+EetJs结合struts2-json-plugin-2.1.8.1.jar得到json数据注意事项

2010-06-28 10:15 459 查看
由于工作需要,需要开发一个项目,用到的是struts2.1.8+spring2.5+hibernate3+EetJs结合struts2-json-plugin-2.1.8.1.jar得到json数据返回给ExtJs使用,由于是刚接触struts2.1.8和struts2-json-plugin-2.1.8.1.jar来配置,所以遇到不少问题,现在整理一下配置注意事项:

1、首先,用了struts2-json-plugin-2.1.8.1.jar在以前版本中的json的jar包则需删去,否则会报错。

2、在action中应注意的问题:

除需要得到的数据要用get方法外,其余的尽量不要用get,并且注入的server千万不能用get方法,除jdbc直连可以,具体怎么回事,不是很清楚,有兴趣的朋友可以研究一下,如知道的可以告诉我一下,谢谢!因为我不是很清楚他的内部实现原理!

例:其中的list就不要生成get方法,否则会无法取得json,这是我找了很久的问题之一,最后还是在别人的博客中提到过试了一下发现正是有这个相关原因。

public class TestAction extends ActionSupport{

private List<Test> tests;

private ITestManage testMag;

public void setTestMag(ITestManage testMag) {

this.testMag = testMag;

}

public List<Test> getTests() {

return tests;

}

public void setTests(List<Test> tests) {

this.tests = tests;

}

@Override

public String execute() throws Exception {

tests=testMag.findAll();

return SUCCESS;

}

}

3、再次就是struts.xml的配置问题,如是手动转换的就用自己手动转换的方法吧

在struts.xml中如果想直接用struts2.1.8的新特性,自动转换数据为json数据的话,那就得再定义一个包,继承自"json-default"

然后是result中type设为json,此时有个注意事项,就是需要设置参数

<param name="excludeProperties">TestManager</param>

在你有result中,其中TestManager是你自己注入的server接口名称,千万注意此点,如果你没有配没有问题,那可能是你的方式不一样也可能,但如果没配不行,那就把这个配上试试吧,嘿嘿,另外还可以配置一下

<param name="excludeProperties">.*hibernateLazyInitializer</param>

听说这后面一个是解决hibernate反射关闭的也就是实体中的属性是另外的实体的问题,有兴趣的朋友可以试试

例:

<package name="json" extends="json-default">

<action name="test" class="test">

<result type="json">

<param name="excludeProperties">TestManager</param>

<param name="excludeProperties">.*hibernateLazyInitializer</param>

</result>

</action>

</package>

以上三点基本都是别人提到过的,不过没有人全部总到一起过,可偏偏让我一起遇到了,塞翁失马焉知非福呢,嘿嘿,至少让我积累了这几个注意事项,如果有相同的朋友,也算是我对他们的一点点帮助吧!

最后也希望大家工作学习顺利,也希望大家一起努力,只要有大家一起努力,那所有的问题就不算问题了,群众的力量是强大的,嘿嘿!

如需要什么帮助,可以联系我,我的QQ是247427748,祝大家天天开心!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: