У меня есть API «Устройство», которое не поддерживает ввод нескольких объектов. Я хочу ввести число в поле «количество создаваемых объектов». После нажатия кнопки отправки приложение должно использовать мои входные данные каксоздать шаблон и создать список с этими объектами, изменив только UUID и имя.
(Поскольку API не поддерживает ввод нескольких объектов, я хотел добавить эти объекты в список, а затем выполнить итерацию по этому спискуи просто вызываю мой метод createDevice
для каждого объекта в списке.)
Так как я новичок в тимелии и весне, я действительно понятия не имею, как мне реализовать что-то вроде этого:
Вот пример кода:
DeviceController:
//SIMPLE Controller
private final DeviceService deviceService;
public IndexController(DeviceService deviceService) {
this.deviceService = deviceService;
}
@GetMapping("/createDevice")
public String createDeviceForm(Model model){
model.addAttribute("device",new Device());
return "createDeviceForm";
}
@PostMapping("/createDevice")
public ResponseEntity<Device> processCreateDevice(@ModelAttribute Device device){
return deviceService.createDevice(device);
}
POJO:
private Id id;
private CustomerId customerId;
private TenantId tenantId;
private String name;
private String type;
private final static long serialVersionUID = -49143341481414714L;
public Device() {
this.id = new Id();
this.tenantId = new TenantId();
this.customerId = new CustomerId();
this.setId(this.id);
this.setTenantId(this.tenantId);
this.setCustomerId(this.customerId);
}
Сервис:
public DeviceServiceImpl(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@Override
public ResponseEntity<Device> createDevice(Device device) {
String baseLink = "http://localhost:9090/api/device/";
RequestEntity<Device> requestEntity = null;
ResponseEntity<Device> responseEntity = null ;
try {
requestEntity = RequestEntity.post(new URI(baseLink)).header("X-Authorization","Bearer " + jwtToken)
.contentType(MediaType.APPLICATION_JSON)
.body(deviceWrapper);
}catch(URISyntaxException e) {
e.printStackTrace();
}
if(requestEntity != null ) {
responseEntity = restTemplate.exchange(requestEntity, Device.class);
}
return responseEntity;
}
Простой шаблон тимелина:
<form action="#" th:action="@{/createDevice}" th:object="${device}" method="post">
<p>Device ID <input type="text" th:field="*{id.id}" /></p>
<p>ENTITYTYPE</p><select th:field="*{id.entityType}">
<option th:each="type : ${T(com.tomilekar.thingsboard.Model.EntityType).values()}" th:value="${type}" th:text="${typeStat}">Type</option>
</select>
<p>Tenant.ID<input type="hidden" th:field="*{tenantId.id}"/></p><p th:text="${device.tenantId.id}"></p>
<p>Tenant.Entitytype </p> <p th:text="${device.tenantId.entityType}"></p>
<p>Customer.ID<input type="hidden" th:field="*{customerId.id}"/></p><p th:text="${device.tenantId.id}"></p>
<p>Customer.Entitytype </p> <p th:text="${device.customerId.entityType}"></p>
<p>Device.name.id</p> <input type="text" th:field="*{name}"/>
<p>Device.Type.id</p> <input type="text" th:field="*{type}"/>
//// ADD button to create multiple objects
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
Работает создание одного объекта в целевом API, как я могу добиться создания нескольких объектовдобавив несколько объектов для созданияe?
Для следующего ввода:
Имя: TestDevice
UUID: "" 692f4a70-5783-11e9-b224-278854131dbb "
Тип Устройство число объектов для создания 5
Я хотел бы вывод:
TestDevice1-5 692f4a70-5783-11e9-b224-278854 [131dbb] ->эта часть изменена для uuid Тип устройства для каждого объекта.
Любые советы приветствуются