我得到了一个非常复杂的生成类堆栈,需要使用 DWR 在服务器和客户端之间发送它。其中一个类使用 jax.xml.datatype.Duration。这是我使用持续时间创建带有测试数据的 bean 的 Java 代码:
DatatypeFactory df = DatatypeFactory.newInstance();
Duration duration = df.newDuration(RANDOM.nextLong());
testObject.setDuration(duration);
DWR 不喜欢对象中的持续时间:
错误 [org.directwebremoting.dwrp.DefaultConverterManager] - 找不到“com.sun.org.apache.xerces.internal.jaxp.datatype.DurationImpl”的转换器
偶尔我会看到类 com.sun.org.apache.xerces.internal.jaxp.datatype.DurationImpl 的相同消息(我想是当我从 JavaScript 回到 Java 时)
定义常规转换器无济于事:
<dwr:convert type="bean" match="com.sun.org.apache.xerces.internal.jaxp.datatype.DurationImpl"/>
<dwr:convert type="bean" match="javax.xml.datatype.Duration"/>
我确定上述方法不起作用,因为它们不是真正的豆子。但我不知道如何让它发挥作用。我在几个地方读过你可以定义一个自定义转换器,但细节似乎很模糊,在大多数情况下已经过时了。DWR 网站说有一个链接可以解释这一切,但它只是将您链接到 javadoc,这对我的实际实现没有帮助。
谁能帮我弄清楚如何处理持续时间?