让DWR传递一个空值,而不是转换为假

问题描述:

我与DWR工作一个Spring 3.x的Web MVC应用程序,我的dwr-beans.xml文件声明这样的bean的上下文中:让DWR传递一个空值,而不是转换为假

<dwr:configuration> 
    <dwr:convert type="bean" class="com.mypackage.Customer"/> 
</dwr:configuration> 

com.mypackage.Customer类具有Boolean类型的一个属性(对象封装器,不是boolean原语)。

此属性具有三种对业务逻辑有意义的不同状态。这可能是真的或错误的,显然......但是对于发信号表示还没有做出选择,值是有意义的。

不幸的是,当一个Java对象对面的JavaScript通过DWR AJAX调用过去了......一个null值显示为false JavaScript对象上。我失去了第三个有意义的“上述两个都没有”的状态。

不幸的是,谷歌搜索并不是很有成果。有谁知道是否有办法让DWR正确地通过Java null作为JavaScript null(或undefined)?或者我可能首先做错了什么?

原来,DWR 确实默认情况下正确处理空值。我的问题进一步上升......不在浏览器和应用程序服务器之间,而是在应用程序服务器和远程Web服务之间调用数据。

这是一段代码,可以在DWR源代码

if (paramType == Boolean.class) 
{ 
    if (trimValue.length() == 0) 
    { 
     return null; 
    } 

    return (T) Boolean.valueOf(trimValue); 
} 

PrimitiveConverter不管何时你传递nullasd或发现其他任何你得空的结果。您可以尝试使用自己的实现来扩展DWR,这可能相当棘手。或者使用String代替3状态的bean(“true”,“false”,“null”)。

+0

你的最后一句话是我想到的,但我不知道从哪里开始,直到将“自定义转换器”类插入DWR的某处... – 2012-04-20 19:04:48