dwr 获取数组列表对象,列表里的对象是数据库持久层的对象Attribute,结果在视图层,获取Attribute的值报错,在页面提示 data is null。
根据报错信息,发现Attribute对象内的映射关系迟缓加载有问题,实例如下:
js代码:
function getAttributeSupListJ(attributePath,attributeId,newAttributeId){
attributeDwr.getAttributeSupList(attributePath+"."+newAttId,__doCreateAttributeList);
}
function __doCreateAttributeList(data){
if(!data) return;
if(data.length<1) return;
var obj=document.getElementById("att_group_1");
var mySelect = document.createElement("select");
mySelect.id = new_att_group_1;
if(window.addEventListener) // Mozilla, Netscape, Firefox
{
mySelect.addEventListener('change', getAttributeSupListJ,false);//添加事件
}
else// IE
{
mySelect.attachEvent('onchange',getAttributeSupListJ);//添加事件
}
obj.appendChild(mySelect);
if(obj){
//DWRUtil.removeAllOptions(new_att_group_1);
DWRUtil.addOptions(new_att_group_1,data,'catalogId','catalogName');
}
}
DWR接口定义:
public List getAttributeSupList(String attributePath)
DWR实现类定义:
public List getAttributeSupList(String attributePath){......}
解决办法:
1、把Attribute.hbm.xml 的映射关系lazy="true"
改成lazy="false"
:
<set name="productAttributeValues" table="product_attribute_value" lazy="false"
inverse="true" sort="unsorted">
<key>
<column name="attributeId"/>
</key>
<one-to-many class="com.dingDang.mall.common.model.catalog.ProductAttributeValue"/>
</set>
2、新建一个临时存储Attribute 对象数据的 对象:
AttributeVO {
private Integer catalogId;
private String catalogName;
private String path;//
private String pathName;
private String data;
private String flag;
private Object object;
修改 DWR实现类定义:
public List getAttributeSupList(String attributePath){
List list = (List)attributeMenuUtil.getAttributesMap().get(attributePath);
List results=new ArrayList();
if(list!=null && list.size()>0){
AttributeVo attributeVo= null;
Attribute att = null;
for(int i=0;i<list.size();i++){
attributeVo= new AttributeVo ();
att = (Attribute)list.get(i);
attributeVo.setCatalogId(att.getAttributeId());
attributeVo.setCatalogName(att.getAttributeName());
attributeVo.setPath(att.getAttributePath());
attributeVo.setData(att.getDefaultValue());
attributeVo.setFlag(att.getInputType()+"");
results.add(i, attributeVo);
}
}
return results;
}
分享到:
相关推荐
NULL 博文链接:https://lionelxx777.iteye.com/blog/358193
这几天无聊开发了一个程序,需要AJAX要求也不高就使用了DWR,但是程序始终报错,因为以前用过DWR,所以最后才发现是DTD文件路径已经被改变了,这里留下一个以防程序又找不到DTD
DWR如何获得返回对象 DWR如何获得返回对象 DWR如何获得返回对象
dwr3.0的web.xml的配置文件,该文件是从dwr.jar文件中拷贝出来的
3. **错误处理**:DWR调用的服务器端方法如果抛出异常,可以捕获并将异常信息返回给客户端,此时可以利用DWR的错误处理机制,而不是依赖JSP的`exception`内置对象。 4. **页面更新**:DWR可以更新客户端的HTML元素...
对于返回JavaBean的方法,DWR会自动将JavaBean转换为JavaScript对象。配置如下: ```xml <param name="class" value="/com/dwr/TestClass"/> ``` 在JavaScript中,你将得到一个JavaScript对象,可以...
在这个特定的项目中,"JAVA AJAX中使用dwr获取后台list并在页面用表格显示",我们将探讨如何结合Direct Web Remoting (DWR) 框架来实现这一功能,同时涉及到二级联动的概念。 DWR是一个开源的Java库,它允许...
DWR (Direct Web Remoting) 是一个开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,从而实现动态Web应用程序。DWR的出现极大地增强了Web应用的用户体验,因为它允许开发者创建几乎与桌面...
在这个"DWR3 对象传输与配置 源代码"示例中,我们将深入探讨DWR3的核心功能、配置方法以及如何在Java环境中集成和使用它。 首先,DWR3 提供了一个安全、高效的机制,使得开发者可以方便地在浏览器端调用服务器端的...
要实现即时提醒,你可能需要创建一个JavaScript函数来监听特定的事件(如定时检查、用户交互等),然后使用DWR调用服务器端的检查或获取新消息的方法。服务器端的方法接收到请求后,检查是否有新数据,如果有,则...
2. Spring 作为整体的容器,管理所有组件的生命周期,包括Struts2的Action、Hibernate的数据访问对象(DAO)以及DWR的远程接口。Spring的DI特性使得各组件之间的依赖关系得以解耦。 3. Hibernate 作为持久层框架,...
当你需要从服务器获取一组数据时,DWR可以通过返回列表来实现。比如,你可能有一个`getUsers()`方法,它返回一个`List<User>`。DWR会将这个列表转换为JavaScript数组,每个元素都是之前提到的`Person`对象的...
Direct Web Remoting (DWR) 是一种开源的Java库,它允许JavaScript在浏览器端与服务器端的Java对象进行交互,从而实现动态Web应用程序。DWR的主要功能是通过AJAX技术在客户端和服务器之间进行实时通信,使得用户界面...
在这个项目中,DWR被用来实现在不刷新整个页面的情况下,从后台获取list数据并动态地在表格中展示,同时还有二级联动功能的实现,增加了用户操作的便捷性。下面我们将深入探讨这个项目的各个关键技术点。 首先,DWR...
- `dwr.xml` 文件是DWR的核心配置文件,用于定义哪些Java对象和方法可以被JavaScript访问。 - `<allow>` 标签定义了可以暴露给JavaScript的权限范围。 - `<create>` 标签创建一个JavaScript对象,该对象可以调用...
总之,DWR框架提供了一种高效、灵活的方式,使得Web应用可以像操作本地对象一样调用服务器端的Java方法,从而提升Web应用的交互性和实时性。通过合理配置和使用,开发者可以构建出强大的富客户端应用。
下面将详细解释DWR返回对象的处理,包括如何获取和处理不同类型的数据,如list、Map、Set以及JavaBean。 1. **无返回值和参数的Java方法** 在`dwr.xml`配置文件中,我们定义一个名为`testClass`的JavaScript接口,...
dwr20.dtd约束文件。 <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd" >
DWR的核心功能在于创建一种透明的远程调用机制,使得JavaScript可以像操作本地对象一样调用服务器上的Java方法。这极大地简化了AJAX应用的开发,因为开发者无需关心底层的XMLHttpRequest交互细节。下面将详细介绍DWR...
这篇博客文章“关于使用DWR返回对象List的方法”主要探讨了如何通过DWR框架在Java后端处理数据并以List对象的形式返回给前端JavaScript。 在Web开发中,通常我们需要从服务器获取数据并在客户端展示,DWR通过AJAX...