让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
不管何时你传递null
,asd
或发现其他任何你得空的结果。您可以尝试使用自己的实现来扩展DWR,这可能相当棘手。或者使用String
代替3状态的bean(“true”,“false”,“null”)。
你的最后一句话是我想到的,但我不知道从哪里开始,直到将“自定义转换器”类插入DWR的某处... – 2012-04-20 19:04:48