2

在我的 Java EE Web 应用程序中,我将 DWR(Direct Web Remoting)用于 Ajax。

Java 类有许多 int 成员,可以通过 DWR 将其转换为 JavaScript 对象。例如:

// Java
public class MyClass {

    private int id;
    private String comments;
}

// the converted JavaScript class
var myObject = {
    id: 100,
    comments: "hello world"
}

但是,当我尝试将id等于null的js对象发送到应用服务器时,DWR报如下异常:

Erroring: batchId[7] message[org.directwebremoting.extend.MarshallException: Error marshalling int: Format error converting null. See the logs for more details.]

任何人都可以提供任何想法吗?

4

1 回答 1

4

在 Java 中,int是值类型,而不是引用类型。因此,它永远不能被赋值null。另一方面,Javascript 使用动态类型。每个变量都可以更改其类型,因此您可以将 null 分配给所有内容。DWR 处理产生错误的问题。

你有几个选择:

如果您需要处理这个值在服务器端可以为 null 的事实(看起来就是这种情况),您可以使用引用类型,例如Integer,而不是int. id否则,只需确保始终为 Javascript成员赋值

另一种选择:如果缺少来自 javascript 对象的值,DWR 可能允许分配一个默认值。

于 2012-10-16T09:54:36.527 回答