JavaプログラムからRESTful Webサービスを呼び出し、それをDateTime Collectionに渡す必要があります。Spring RestTemplate:java.util.Collectionをシリアライズする方法
だから、私のコードは次のようなものです:
RestTemplate restTemplate = new RestTemplate();
try {
String scheme = request.getScheme();
String userInfo = request.getRemoteUser();
String host = request.getLocalAddr();
int port = request.getLocalPort();
String path = "/myapp/common/myapi";
MultiValueMap<String, Object> requestParams = new LinkedMultiValueMap<String, Object>();
requestParams.add("aId", objA.getId());
requestParams.add("bIb", objB.getId());
for (DateTime date : dates) {
requestParams.add("dates", date);
}
URI apiUri = new URI(scheme, userInfo, host, port, path, null, null);
result = restTemplate.postForObject(apiUri.toString(), request, BigDecimal.class,
requestParams);
} catch (URISyntaxException e) {
logger.error(e.getMessage());
} catch (DataAccessException e) {
logger.error(e.getMessage());
}
そしてWebサービスの署名はのようなものです:
@RequestMapping(value = "myapi", method = RequestMethod.POST)
public @ResponseBody BigDecimal myApi(
@RequestParam("dates") final List<DateTime> dates,
@RequestParam("aId") final Integer aId, @RequestParam("bId") final Integer bId) {
[...]
return result;
}
しかし、私はエラーを取得する:
org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: No serializer found for class java.util.Collections$3 and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS))
私がいることを理解します問題はコレクションのシリアライゼーションですが、解決方法はわかりません。
public class CalcolaGiorniResiduiCommand implements Serializable {
private List<DateTime> dates;
//[...]
}
コントローラを変更::
@RequestMapping(value = "myapi", method = RequestMethod.POST)
public @ResponseBody BigDecimal myApi(
@RequestParam("command") final MyCommand command) {
そして最後に:
MyCommand command = MyCommand.build(1, 1, dates); //dates is a DateTime Collection
restTemplate.postForObject(apiUri.toString(), request, BigDecimal.class, command);
しかし、私 私もCommandクラスで試してみましたので、何かを更新しました
同じエラーが発生します。
お願いします。 documentationから
おかげで、それはまだ動作しません。 – Alessandro