从Javascript向Java类传递null时DWR报告转换器错误
在我的JavaEEWeb应用程序中,我使用DWR(DirectWebRemoting)实现Ajax Java类有许多int成员,可以通过DWR将其转换为JavaScript对象。例如:从Javascript向Java类传递null时DWR报告转换器错误,java,javascript,jakarta-ee,Java,Javascript,Jakarta Ee,在我的JavaEEWeb应用程序中,我使用DWR(DirectWebRemoting)实现Ajax Java类有许多int成员,可以通过DWR将其转换为JavaScript对象。例如: // Java public class MyClass { private int id; private String comments; } // the converted JavaScript class var myObject = { id: 100, comme
// Java
public class MyClass {
private int id;
private String comments;
}
// the converted JavaScript class
var myObject = {
id: 100,
comments: "hello world"
}
但是,当我尝试将id等于null的js对象发送到app server时,DWR报告了以下异常:
Erroring: batchId[7] message[org.directwebremoting.extend.MarshallException: Error marshalling int: Format error converting null. See the logs for more details.]
有人能帮上忙吗?在Java中,
int
是一种值类型,而不是引用类型。因此,它永远无法被分配值null
。
另一方面,Javascript使用动态类型。每个变量都可以更改其类型,因此可以为所有变量指定null。
DWR处理生成错误的问题
您有几个选择:
如果需要处理这个值在服务器端可以为null的事实(看起来就是这样),可以使用引用类型,比如Integer
,而不是int
。
否则,只需确保始终为Javascriptid
成员分配一个值即可
另一个选项:如果javascript对象的值丢失,DWR可能允许指定默认值 在Java中,
int
是一种值类型,而不是引用类型。因此,它永远无法被分配值null
。
另一方面,Javascript使用动态类型。每个变量都可以更改其类型,因此可以为所有变量指定null。
DWR处理生成错误的问题
您有几个选择:
如果需要处理这个值在服务器端可以为null的事实(看起来就是这样),可以使用引用类型,比如Integer
,而不是int
。
否则,只需确保始终为Javascriptid
成员分配一个值即可
另一个选项:如果javascript对象的值丢失,DWR可能允许指定默认值