论坛首页 Web前端技术论坛

DWR帮助说明-dwr的bug及其解决方法

浏览 29163 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-09-15  
Condition condition = new Condition(new Comparison("id",">",new Integer(300))); 


依然提示没有定义。
0 请登录后投票
   发表时间:2007-09-15  
在javaeye发短信,把你写的这段程序的jsp和bus以及dwr.xml发给我,还有错误信息,完整的。ok!
0 请登录后投票
   发表时间:2007-09-20  
fangang 写道
kaki 写道
2189735 [ExecuteThread: '14' for queue: 'weblogic.kernel.Default'] WARN  org.directwebremoting.dwrp.BaseCallMarshaller  - Marshalling exception
org.directwebremoting.extend.MarshallException: Error marshalling java.lang.Object: No converter found for 'class java.lang.Object'. See the logs for more details.
	at org.directwebremoting.dwrp.DefaultConverterManager.convertInbound(DefaultConverterManager.java:147)
	at org.directwebremoting.convert.ArrayConverter.convertInbound(ArrayConverter.java:93)
	at org.directwebremoting.dwrp.DefaultConverterManager.convertInbound(DefaultConverterManager.java:159)
	at org.directwebremoting.convert.BasicObjectConverter.convertInbound(BasicObjectConverter.java:139)
	at org.directwebremoting.dwrp.DefaultConverterManager.convertInbound(DefaultConverterManager.java:159)
	at org.directwebremoting.dwrp.BaseCallMarshaller.marshallInbound(BaseCallMarshaller.java:152)
	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:120)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
	at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
	at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
	at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
	at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
	at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6724)
	at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
	at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
	at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
	at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
	at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
	at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
2189750 [ExecuteThread: '14' for queue: 'weblogic.kernel.Default'] WARN  org.directwebremoting.dwrp.BaseCallMarshaller  - --Erroring: batchId[5] message[org.directwebremoting.extend.MarshallException: Error marshalling java.lang.Object: No converter found for 'class java.lang.Object'. See the logs for more details.]


这是设计dwr常见的问题,原因是使用了Object作为函数参数,或者在dwr中转换的对象包含类型为Object的属性。前一个问题的解决方法是不要使用这样的参数,所有的参数都是某个具体类型并在dwr中注册。后一个问题的解决方法就是在dwr.xml中禁用该属性。



用的还是您的框架,问题发生的环节是在翻页的时候。

有些奇怪。
0 请登录后投票
   发表时间:2007-09-21  
在dwr.xml中加上这个试试:
<convert match="com.htxx.service.dao.query.*" converter="bean"></convert>
0 请登录后投票
   发表时间:2007-09-22  
对于问题一:
能否将一对多关联再Dao层封装好,业务层调用的是完整的list集合,javabean设计为既包括人的属性,也包括部门属性。
对于DWR来说,只知道一个javabean就可以了。
问题不是得到圆满解决了!
0 请登录后投票
   发表时间:2007-09-23  
crabboy 写道
对于问题一:
能否将一对多关联再Dao层封装好,业务层调用的是完整的list集合,javabean设计为既包括人的属性,也包括部门属性。
对于DWR来说,只知道一个javabean就可以了。
问题不是得到圆满解决了!

也许crabboy没有弄明白我提出的这个问题。正如你所说的,在设计的时候,将一对多关联在Dao层封装好,业务层调用的是完整的list集合,javabean设计为既包括人的属性,也包括部门属性。但是,dwr.xml的不同配置可以影响该问题的出现与不出现。如果dwr.xml将值对象配置为这样:
<convert match="com.htxx.demo.model.*" converter="bean"></convert>

这个问题就不会出现,因为最初dwr.xml的版本就是这样配置的,方案非常成熟,没有问题,但hibernate的许多优秀特性都不能体现出来,效率也是一个问题。
如果dwr.xml将值对象只这样配置:
<convert match="com.htxx.demo.model.Employee" javascript="Employee" converter="hibernate3"></convert>

这应当是dwr新增的功能,它能充分体现出hibernate的许多优秀特性,比如延迟加载,但还是不成熟的,存在我提到的问题,不信你可以试一试。
0 请登录后投票
   发表时间:2007-09-24  
<convert match="com.htxx.service.dao.query.*" converter="bean"></convert>  


谢谢!
0 请登录后投票
   发表时间:2007-09-24  
哈哈,搞定啦?
0 请登录后投票
   发表时间:2007-09-25  
没有解决

<convert match="com.htxx.service.dao.query.*" converter="bean"></convert>    


是解决js的问题,后来的Condition是在BusImp中实现的,所以和这个是不是有冲突??

现在很想知道如何在前台方便的传递条件??
0 请登录后投票
   发表时间:2007-09-26  
今天回到公司测试了一下,估计这个问题是Condition采用数组的方式来传递条件造成的,原因就是它的Object[]。
在dwr编程中特别要注意的是,不能在任何一个要调用的方法中存在Object或Object[]的参数及返回值,甚至在参数及返回值中不能存在某个属性是Object或Object[],否则会出现这个错误。我编写的Condition并不是专为dwr编写的,但在使用的时候发现采用数组的方式会出现这个错误,多亏我还有另一个方式:代理类的方式:)
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics