我有一个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上创建一个对象正常工作, 如何通过添加多个要创建的对象来实现创建多个对象?
对于以下输入:
名称:TestDevice
UUID:““ 692f4a70-5783-11e9-b224-278854131dbb”
键入要创建的对象的设备编号5
我想要一个输出:
TestDevice1-5 692f4a70-5783-11e9-b224-278854 [131dbb]->此部分 每个对象的uuid类型设备已更改。
任何提示都值得赞赏
答案 0 :(得分:1)
您可以通过这种方式
restart
注意:这里,需要使用JavaScript或JQuery在单击添加按钮时动态生成这些字段。