使DWR传递空值,而不是转换为false

时间:2012-04-20 18:30:03

标签: java javascript spring spring-mvc dwr

我在Spring 3.x Web MVC应用程序的上下文中使用DWR,其中我的dwr-beans.xml文件声明了这样的bean:

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

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

此属性有三种对业务逻辑有意义的不同状态。它可能是真或假,显然......但null值对于表示尚未进行选择的信号是有意义的。

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

每当您传递nullasd或其他任何内容时,您都会获得null。您可以尝试使用自己的实现来扩展DWR,这可能相当棘手。或者使用String代替您的bean,状态为3(“true”,“false”,“null”)。

答案 1 :(得分:0)

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