0 0

DWR调用参数为List<Object>的方法出错20

我想调用一个参数为List<Person>的方法,但是报转换错误。调用参数为Person的方法成功,调用参数为List<String>也可以。
我搜到了跟我问题一样的帖子,但是没有答案。。:( 希望大家能帮帮我。

JavaScript代码如下:
    function insertPerson(){
    	var person1 = new Object();
    	person1.id = '1';
    	person1.name = '2';
    	person1.pwd = '3';
    	
    	var person2 = new Object();
    	person2.id = '1';
    	person2.name = '2';
    	person2.pwd = '3';
    	
    	var personlist = new Array();
    	personlist[0] = person1;
    	personlist[1] = person2;
    	
    	TestServ.insertListPersons(personlist,{
    		callback:function() {alert('插入成功')}, 
			errorHandler:function(errorString, exception) {alert(errorString)}
    	});
    }


TestServ代码如下:
public class TestServ{
	public void insertListPersons(List<Person> lp){
		try{
			for (int i=0;i<lp.size();i++){
				((PersonDao)this.getBd()).insertPerson(lp.get(i));
			}
			
		} catch (RuntimeException e) {
			e.printStackTrace();
			throw new RuntimeException("插入人表出错!");
		}
	}
}


DWR.XML配置如下:
<dwr>
	<allow>
		<convert converter="bean"
			match="com.chuhong.web.business.model.Person" >
			<param name="include" value="id,name,pwd"></param>
		</convert>

		<create creator="spring" javascript="UserManager">
			<param name="beanName" value="UserManager" />
		</create>

		<create creator="spring" javascript="TestServ">
			<param name="beanName" value="testServ" />
		</create>
	</allow>
	
	<signatures>
		<![CDATA[
			import java.util.List;
			import com.chuhong.web.business.model.Person;
			import com.chuhong.web.service.TestServ;
			
			TestServ.insertListPersons(List<Person> lp);
		]]>
	</signatures>
</dwr>


报错如下:
WARN [http-8080-Processor24] (CommonsLoggingOutput.java:59) - Missing type info for insertListPersons(0<0>). Assuming this is a map with String keys. Please add to <signatures> in dwr.xml
INFO [http-8080-Processor24] (CommonsLoggingOutput.java:51) - Exec: TestServ.insertListPersons()
java.lang.ClassCastException: java.lang.String
	at com.chuhong.web.service.TestServ.insertListPersons(TestServ.java:47)
	at com.chuhong.web.service.TestServ$$FastClassByCGLIB$$4d9a7d26.invoke(<generated>)
	at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
         ......


在debug时看到lp的值是这样的:[{id:reference:c0-e2, name:reference:c0-e3, pwd:reference:c0-e4}, {id:reference:c0-e6, name:reference:c0-e7, pwd:reference:c0-e8}]
请问这是什么原因造成转换失败的?

问题补充:
原因以找到 我使用了Spring  如果 使用new创建则无问题。
DWR 
2008年7月06日 17:16

3个答案 按时间排序 按投票排序

0 0

传入的参数DWR默认为MAP结构,请把public void insertListPersons(List<Person> lp){  
的List改为MAP进行操作就可以了

2008年7月07日 21:34
0 0

类型转换错误,
at com.chuhong.web.service.TestServ.insertListPersons(TestServ.java:47) 
是哪句代码??

2008年7月07日 17:56
0 0

引用
person1.id = '1';


问题可能出在这里
    var person1 = new Object();   
    person1.id = 1;   
    person1.name = '2';   
    person1.pwd = '3';   
       
    var person2 = new Object();   
    person2.id = 1;   
    person2.name = '2';   
    person2.pwd = '3';   


你的javabean的id应该为integer类型的吧

2008年7月06日 21:45

相关推荐

    dwr各种例子(各种数据类型返回值+包+导入可用+注释+附带讲解)

    List&lt;Object&gt;通常用于存储异构数据,而Map则提供键值对的存储方式。DWR同样能很好地处理这些复杂数据结构,将它们转换为JavaScript的Array和Object。 5. **Map&lt;String, Object&gt;**: 这种类型的Map特别常见,因为键...

    Dwr配置详解.doc

    HelloDwr.sendListNoGeneric(List&lt;Person&gt;); ]]&gt; &lt;/signatures&gt; &lt;/dwr&gt; ``` 三、实现类和页面JS 在lee包中,创建HelloDwr类,用于提供远程方法: ```java public class HelloDwr { // 第一个简单的hello方法 ...

    DWR使用配置,并用DWR获得返回list类型中的对象,并在页面显示

    List&lt;MyObject&gt; dataList = new ArrayList&lt;&gt;(); // 假设填充数据... return dataList; } ``` 这里的`MyObject`是你要返回的数据对象,可以根据实际需求进行定义。 3. **生成DWR的JavaScript接口**:在完成上述...

    DWR调用含有参数的JAVA类.doc

    如果Java方法的参数是一个列表,例如`public String getSize(List&lt;String&gt; data)`,可以通过以下方式实现: - **步骤1:定义Java类** ```java public class DwrTest { public String getSize(List&lt;String&gt; data)...

    dwr + json简单分页

    List&lt;DataObject&gt; getPage(int pageNum, int pageSize); } ``` 3. **实现服务接口**:在后台实现`PageService`接口,执行SQL查询并返回分页结果。 ```java @Service public class PageServiceImpl implements ...

    关于使用DWR返回对象List的方法

    public List&lt;MyObject&gt; getObjects() { // 这里是获取数据的逻辑,比如从数据库查询 List&lt;MyObject&gt; objects = ...; return objects; } } ``` 这里的`MyObject`是自定义的数据模型类,可以包含各种属性。 ...

    dwr使用例子配置和使用

    public List&lt;Map&lt;Object, Object&gt;&gt; getProvinces() { return jdbcTemplate.queryForList("SELECT cityid, content, parent FROM citys WHERE parent='0'"); } public List&lt;Map&lt;Object, Object&gt;&gt; getCitys...

    JAVA AJAX中使用DWR获取后台list并在页面 用表格动态显示

    在项目中,我们需要在DWR配置文件(通常为dwr.xml)中定义允许的远程方法,这样JavaScript就能通过DWR引擎调用这些方法,获取服务器端的数据。例如,我们可以定义一个返回list的Java方法: ```xml &lt;create id="data...

    课程讲解文档

    List&lt;String&gt; list = new ArrayList&lt;&gt;(); list.add("Hello"); list.add("Say"); list.add("张三"); return list; } ``` 客户端调用: ```javascript $("#btn2").click(function () { HelloWorld.getMsg({ ...

    dwr练习实例(各种数据转换list,map,数组等)

    Map&lt;String, String&gt; map = new HashMap&lt;&gt;(); map.put("key1", "value1"); map.put("key2", "value2"); return map; } ``` 在JavaScript端,你可以通过DWR调用这个方法,得到一个键值对的对象: ```javascript ...

    ssha 最新 最完整 配置信息

    #### Dwr调用Spring管理的Bean **表格16**: spring配置文件对dwr对象做注入(必需设置) ```xml &lt;bean id="myService" class="com.example.service.MyService"&gt; &lt;!-- 如果需要,可以在这里注入其他依赖 --&gt; &lt;/bean&gt;...

    Ajax的DWR使用

    例如,如果有一个名为`UserService`的类,其中有一个`getUserList()`方法接收List参数并返回Map结果,配置可能会如下所示: ```xml &lt;create id="userService"&gt; &lt;class&gt;com.example.UserService&lt;/class&gt; &lt;/create&gt; ...

    DWR TREE

    public List&lt;TreeNode&gt; getTreeData() { // 返回树节点数据 } } ``` **3. JavaScript与DWR交互** 在客户端,我们需要创建一个JavaScript对象,该对象将与DWR引擎通信,调用服务器端的方法获取和更新树数据。DWR...

    DWR+EXT简单示例

    数据源通常设置为DWR的RemoteProxy,这样EXT GRID可以通过DWR调用服务器端的方法获取数据。 3. **定义DWR接口**:在服务器端编写Java方法,这些方法处理来自客户端的请求,如获取数据、更新数据等。 4. **调用DWR...

    dwr+hibernate实现的分页技术

    public List&lt;Article&gt; select(String pages, Map&lt;String, Object&gt; fromMap) { Session hibernateSession = HibernateSession.getSession(); // 获取数据库会话 PageController pageController = new ...

    java web中调用后台方法用js快速生成图表

    List&lt;Map&lt;String, Object&gt;&gt; getData(); } ``` 8. **优化与安全**: - 对于大量数据,可以考虑使用分页或流式传输来优化性能。 - 考虑使用JSONP或CORS解决跨域问题,确保前端能正确调用后端API。 - 为防止XSS...

    DWR教程ppt

    3. **客户端引用**:客户端通过`&lt;script&gt;`标签引入以`dwr/interface/xxx.js`路径命名的JavaScript文件,这些文件包含了可以调用的Java方法。 **DWR调用示例和数据类型映射** DWR支持多种数据类型的转换,如: - ...

    sql+dwr实现无刷新分页

    public List&lt;MyObject&gt; getPaginatedData(int start, int limit); } ``` 然后,我们在服务器端实现这个接口,执行SQL查询并返回结果: ```java public class MyServiceImpl implements MyService { @Override ...

    DWR使用教程

    **7、DWR调用示例** 常见的调用示例包括简单的字符串、Map集合类型、List集合类型以及复杂的对象组合。此外,DWR支持两种回调函数的写法,适应不同的使用场景。 总的来说,DWR简化了前后端交互,提高了Web应用的...

Global site tag (gtag.js) - Google Analytics