-
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创建则无问题。2008年7月06日 17:16
3个答案 按时间排序 按投票排序
-
传入的参数DWR默认为MAP结构,请把public void insertListPersons(List<Person> lp){
的List改为MAP进行操作就可以了2008年7月07日 21:34
-
类型转换错误,
at com.chuhong.web.service.TestServ.insertListPersons(TestServ.java:47)
是哪句代码??2008年7月07日 17:56
-
引用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
相关推荐
List<Object>通常用于存储异构数据,而Map则提供键值对的存储方式。DWR同样能很好地处理这些复杂数据结构,将它们转换为JavaScript的Array和Object。 5. **Map<String, Object>**: 这种类型的Map特别常见,因为键...
HelloDwr.sendListNoGeneric(List<Person>); ]]> </signatures> </dwr> ``` 三、实现类和页面JS 在lee包中,创建HelloDwr类,用于提供远程方法: ```java public class HelloDwr { // 第一个简单的hello方法 ...
List<MyObject> dataList = new ArrayList<>(); // 假设填充数据... return dataList; } ``` 这里的`MyObject`是你要返回的数据对象,可以根据实际需求进行定义。 3. **生成DWR的JavaScript接口**:在完成上述...
如果Java方法的参数是一个列表,例如`public String getSize(List<String> data)`,可以通过以下方式实现: - **步骤1:定义Java类** ```java public class DwrTest { public String getSize(List<String> data)...
List<DataObject> getPage(int pageNum, int pageSize); } ``` 3. **实现服务接口**:在后台实现`PageService`接口,执行SQL查询并返回分页结果。 ```java @Service public class PageServiceImpl implements ...
public List<MyObject> getObjects() { // 这里是获取数据的逻辑,比如从数据库查询 List<MyObject> objects = ...; return objects; } } ``` 这里的`MyObject`是自定义的数据模型类,可以包含各种属性。 ...
public List<Map<Object, Object>> getProvinces() { return jdbcTemplate.queryForList("SELECT cityid, content, parent FROM citys WHERE parent='0'"); } public List<Map<Object, Object>> getCitys...
在项目中,我们需要在DWR配置文件(通常为dwr.xml)中定义允许的远程方法,这样JavaScript就能通过DWR引擎调用这些方法,获取服务器端的数据。例如,我们可以定义一个返回list的Java方法: ```xml <create id="data...
List<String> list = new ArrayList<>(); list.add("Hello"); list.add("Say"); list.add("张三"); return list; } ``` 客户端调用: ```javascript $("#btn2").click(function () { HelloWorld.getMsg({ ...
Map<String, String> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); return map; } ``` 在JavaScript端,你可以通过DWR调用这个方法,得到一个键值对的对象: ```javascript ...
#### Dwr调用Spring管理的Bean **表格16**: spring配置文件对dwr对象做注入(必需设置) ```xml <bean id="myService" class="com.example.service.MyService"> <!-- 如果需要,可以在这里注入其他依赖 --> </bean>...
例如,如果有一个名为`UserService`的类,其中有一个`getUserList()`方法接收List参数并返回Map结果,配置可能会如下所示: ```xml <create id="userService"> <class>com.example.UserService</class> </create> ...
public List<TreeNode> getTreeData() { // 返回树节点数据 } } ``` **3. JavaScript与DWR交互** 在客户端,我们需要创建一个JavaScript对象,该对象将与DWR引擎通信,调用服务器端的方法获取和更新树数据。DWR...
数据源通常设置为DWR的RemoteProxy,这样EXT GRID可以通过DWR调用服务器端的方法获取数据。 3. **定义DWR接口**:在服务器端编写Java方法,这些方法处理来自客户端的请求,如获取数据、更新数据等。 4. **调用DWR...
public List<Article> select(String pages, Map<String, Object> fromMap) { Session hibernateSession = HibernateSession.getSession(); // 获取数据库会话 PageController pageController = new ...
List<Map<String, Object>> getData(); } ``` 8. **优化与安全**: - 对于大量数据,可以考虑使用分页或流式传输来优化性能。 - 考虑使用JSONP或CORS解决跨域问题,确保前端能正确调用后端API。 - 为防止XSS...
3. **客户端引用**:客户端通过`<script>`标签引入以`dwr/interface/xxx.js`路径命名的JavaScript文件,这些文件包含了可以调用的Java方法。 **DWR调用示例和数据类型映射** DWR支持多种数据类型的转换,如: - ...
public List<MyObject> getPaginatedData(int start, int limit); } ``` 然后,我们在服务器端实现这个接口,执行SQL查询并返回结果: ```java public class MyServiceImpl implements MyService { @Override ...
**7、DWR调用示例** 常见的调用示例包括简单的字符串、Map集合类型、List集合类型以及复杂的对象组合。此外,DWR支持两种回调函数的写法,适应不同的使用场景。 总的来说,DWR简化了前后端交互,提高了Web应用的...