Я делаю клиент-серверное приложение, которое отправляет матрицу на сервер, где ее определитель вычисляется и затем отправляется обратно клиенту. Я создал этот класс-оболочку:
public class MatrixDTO { // with getters and setters
private double[][] matrix;
private double determinant;
}
И я также реализовал серверный лог c для получения определителя из объекта MatrixDTO. Я добавил этот RestController на сервер:
@RestController
public class MatrixController {
@RequestMapping(value = "/", method = RequestMethod.POST)
public MatrixDTO postMapping(@RequestParam MatrixDTO matrixDTO) {
// code to compute determinant ommitted
matrixDTO.setDeterminant(determinant);
return matrixDTO;
}
Затем в клиенте я добавил этот метод отправки запроса:
final String uri = "http://localhost:8080/?matrixDTO={matrixDTOparam}";
// initialized wrapper object only with matrix data
MatrixDTO input = new MatrixDTO(data);
Map<String, MatrixDTO> params = new HashMap<>();
params.put("matrixDTOparam", input);
RestTemplate restTemplate = new RestTemplate();
result = restTemplate.postForObject(uri, input, MatrixDTO.class, params);
// now I should be able to extract the determinant with result.getDeterminant()
Многие часы были потеряны, пытаясь получить этот простой код для работы. Ошибка:
Failed to convert value of type 'java.lang.String' to required type 'MatrixDTO';
nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'MatrixDTO':
no matching editors or conversion strategy found]
Мой вопрос заключается в следующем: следует ли мне выбрать другой подход к моей проблеме, и если нет, есть ли простой способ заставить код работать? Я ищу простую реализацию и не нужно много настраивать. Спасибо.