繁体   English   中英

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

[英]How to upload a Java (Hash)Map to Apache ISIS RestFUL service

是否可以将地图上传到Apache ISIS的静态界面? 我要上传到以下界面:

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无法422 Unprocessable Entity状态,并出现以下错误: Expected a link (because this object's type is not a value) but found no 'href'"

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

现在我的问题是:是否可以使用JSON表示将JavaMap上传到Apache ISIS,还是不可能? 如果无法这样做,是否还有其他好的解决方案可以单独上传Map零件或类似的东西?

干杯,谢谢您的回答!

简短的回答是“否”,RO查看器不支持此操作,主要是因为(至少当前)动作参数只能是标量,而不能是列表或映射。

您有两种选择。

首先是将地图序列化为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM