gpt4 book ai didi

java - 如何将 Java (Hash)Map 上传到 Apache ISIS RestFUL 服务

转载 作者:行者123 更新时间:2023-12-01 09:01:41 25 4
gpt4 key购买 nike

是否可以将 map 上传到 Apache ISIS 的 Restful 界面?我有以下界面,我想上传到:

public SendMessageResponse send(
@ParameterLayout(named = "dummyParam1") @Parameter(optionality = Optionality.MANDATORY) String dummyParam1,
@ParameterLayout(named = "dummyParam2") @Parameter(optionality = Optionality.MANDATORY) String dummyParam2,
@ParameterLayout(named = "dummyMap1") @Parameter(optionality = Optionality.OPTIONAL) Map<String, String> dummyMap1)
{ ... }

dummyMap1 是我要上传的参数。在 Java 中,这是我将 JavaMap 转换为 JSON 字符串的尝试:

Map<String, String> dummyMap1Up = new HashMap<String, String>();
dummyMap1Up.put("Test123", "123");
dummyMap1Up.put("Test456", "456");

JSONObject json = new JSONObject();
json.put("dummyParam1", "someString");
json.put("dummyParam2", "someOtherString");
json.put("dummyMap1", dummyMap1Up);

但是当我想上传这个 JSON 时,除了 Map 之外,所有参数都很好。我收到 422 Unprocessable Entity 状态和以下错误:需要一个链接(因为该对象的类型不是值),但没有找到“href””

我试图弄清楚如何在 Apache ISIS 中用 JSON 构建 map 。我尝试从 Apache ISIS 响应中获取 map ,但我得到的唯一结果是它被禁用的通知,因为 "disabledReason": "Non-cloneable view models are read-only".

所以我现在的问题是:是否可以使用 JSON 表示形式将 JavaMap 上传到 Apache ISIS,还是不可能?当不可能时,是否有其他好的解决方案来单独上传 map 部分或类似的东西?

干杯并感谢您的回答!

最佳答案

简短的回答是“不”,RO 查看器不支持这一点,主要是因为(至少目前) Action 参数只能是标量,而不能是列表或映射。

您有几个选择。

第一种是将你的 map 序列化为 json 字符串,然后将参数定义为字符串。显然,在操作中您需要反序列化它。

或者,您始终可以在 RO 查看器提供的端点之外定义其他自定义端点。为此,您需要子类 RestfulObjectsApplication [1] 以添加其他端点,然后在 web.xml [2] 中注册

HTH,

[1] https://github.com/apache/isis/blob/master/core/viewer-restfulobjects-server/src/main/java/org/apache/isis/viewer/restfulobjects/server/RestfulObjectsApplication.java#L36[2]https://github.com/apache/isis/blob/master/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/web.xml#L272

关于java - 如何将 Java (Hash)Map 上传到 Apache ISIS RestFUL 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41617980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com