【问题标题】:How to implement with AutoBean a list of different base types like String, Integer, etc.?如何使用 AutoBean 实现不同基本类型(如字符串、整数等)的列表?
【发布时间】:2012-11-04 17:28:46
【问题描述】:

我想创建一个带有三个参数的 JSON-RPC 请求 - 字符串、整数和我自己的对象。请求应如下所示:

{"method":"MyMethod", "params":["text", 123, {"name": "any text", "num": 15}], "id":1}

理想情况下,我想创建一个这样的 AutoBean(但它不起作用):

interface JsonRpcRequest {  

    String getJsonrpc();
    void setJsonrpc(String value);

    String getMethod();
    void setMethod(String value);

    List<Object> getParams(); // ERROR: Type Object may not be used
    void setParams(List<Object> params); // ERROR: Type Object may not be used

} 

interface JsonRpcRequestFactory extends AutoBeanFactory {

    AutoBean<JsonRpcRequest> jsonRpcRequest();

}

问题是AutoBean框架不允许使用List&lt;Object&gt; inside interface。

是否有另一种方法来创建不同基于和非基于类型的元素的列表/数组?

【问题讨论】:

    标签: java gwt json-rpc autobean


    【解决方案1】:

    不,你根本做不到。 AutoBean 要求一切都是静态类型的:没有多态性,也没有混合类型的映射列表。

    您可能会对 RequestFactory 对 JSON-RPC 的内置支持感兴趣。

    【讨论】:

      【解决方案2】:

      为什么您的参数都需要在列表中传回?你肯定不会对String、Integer 和另一个Object 做同样的事情!只需将它们分别寄回即可。

      此外,您不是通过 JSON 发送自定义 Object,而是发送该对象的 objid...所以只需发送 Integer id 并让服务器处理它。

      【讨论】:

      • 感谢您的回答。但我需要一个多功能且简单的系统。例如,我可以向服务器发送一个 sessionId 和复杂的过滤器,其中包括几个字段名和条件数。另外,服务器端不是我可以实现的。我需要一种方法来调用具有任意数量的任意类型参数的过程。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      • 2011-08-27
      • 2021-10-27
      • 2011-12-01
      相关资源
      最近更新 更多