dwr 使用接口作方法的参数

近来做一个项目,用到了dwr,在调用spring中的service时,老是报错,

如下: 浏览器中页面错误:

 服务器错误:

2008-5-18 16:55:48 org.directwebremoting.util.CommonsLoggingOutput warn 警告: Marshalling exception org.directwebremoting.extend.MarshallException: Error marshalling com.test.Man: com.test.Man. See the logs for more details.          at org.directwebremoting.convert.BasicObjectConverter.convertInbound(BasicObjectConverter.java:151)          at org.directwebremoting.dwrp.DefaultConverterManager.convertInbound(DefaultConverterManager.java:159)          at org.directwebremoting.dwrp.BaseCallMarshaller.marshallInbound(BaseCallMarshaller.java:155)          at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:44)          at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)          at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)          at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)          at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)          at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)          at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)          at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)          at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)          at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)          at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)          at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)          at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)          at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)          at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)          at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)          at java.lang.Thread.run(Unknown Source) Caused by: java.lang.InstantiationException: com.test.Man          at java.lang.Class.newInstance0(Unknown Source)          at java.lang.Class.newInstance(Unknown Source)          at org.directwebremoting.convert.BasicObjectConverter.convertInbound(BasicObjectConverter.java:84)          ... 21 more 2008-5-18 16:55:48 org.directwebremoting.util.CommonsLoggingOutput warn 警告: --Erroring: batchId[0] message[org.directwebremoting.extend.MarshallException: Error marshalling com.test.Man: com.test.Man. See the logs for more details.]  

大概意思是接口不能被初始化。

检查原因:是所调用的service的方法有接口参数,而在javascript中参数包装方式是:object:{property:value},

更改为:var object = new interfaceImpl;即可。

在dwr,xml中需要定义出接口,和实现类的convert.

如:

 <convert converter="bean" match="com.archives.core.Query" />

<convert converter="bean" match="com.archives.dwr.QueryImpl" />

 在javascript中定义接口的实现类:

如:var query = new  QueryImpl;

在调用service时,把上述实现类的对象传递到带有接口参数的方法中。

转载请标明出处:http://blog.csdn.net/hpujsj/archive/2008/05/18/2456186.aspx

参考:http://www.nabble.com/Using-Interface-as-method-parameter-td16506249.html

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值