【问题标题】:Make DWR pass a null value, rather than converting to false让 DWR 传递一个空值,而不是转换为 false
【发布时间】:2012-04-20 18:30:02
【问题描述】:

我在 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 值对于表示尚未进行选择是有意义的。

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

很遗憾,Google 搜索的成效并不大。有谁知道是否有办法让 DWR 正确地通过 Java null 作为 JavaScript null(或 undefined)传递?还是我一开始就做错了什么?

【问题讨论】:

    标签: java javascript spring spring-mvc dwr


    【解决方案1】:

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

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

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

    【讨论】:

    • 你的最后一句话是我脑海中闪过的东西,但我不确定从哪里开始将“自定义转换器”类插入 DWR 某处......
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 1970-01-01
      • 2014-02-24
      • 2014-03-16
      • 1970-01-01
      相关资源
      最近更新 更多