gpt4 book ai didi

java - 为 HTTP Post 创建多个对象

转载 作者:行者123 更新时间:2023-11-30 05:41:33 24 4
gpt4 key购买 nike

我有一个API“Device”,它不支持多个对象的输入..我想在“创建对象的数量”字段中输入一个数字按下提交按钮后,应用程序应该使用我的输入作为模板,并创建一个包含那些仅更改了 UUID 和名称的对象的列表。

(由于 API 不支持多个对象的输入,我想将这些对象添加到列表中,然后迭代此列表,然后为列表中的每个对象调用我的方法 createDevice 。)

由于我是 thymeleaf 和 Spring 的新手,我真的不知道我应该如何实现这样的事情:

这里是一些示例代码:

设备 Controller :

//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;
}

简单 thymeleaf 模板:

<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 上创建一个对象是可行的,如何通过添加多个要创建的对象来实现创建多个对象?

对于以下输入:

Name : TestDevice

UUID: ""692f4a70-5783-11e9-b224-278854131dbb"

Type Device number of objects to create 5

我想要一个输出:

TestDevice1-5 692f4a70-5783-11e9-b224-278854[131dbb] -> this part changed for uuid Type Device for each objects.

任何提示表示赞赏

最佳答案

你可以这样做

<p>Device.name.id</p> <input type="text" th:field="*{name[0]}"/> //Default
<p>Device.Type.id</p> <input type="text" th:field="*{type[0]}"/> //Default

<p>Device.name.id</p> <input type="text" th:field="*{name[1]}"/> //Generate Dynamically
<p>Device.Type.id</p> <input type="text" th:field="*{type[1]}"/> //Generate Dynamically
.
.
.
<p>Device.name.id</p> <input type="text" th:field="*{name[n]}"/> //Generate Dynamically
<p>Device.Type.id</p> <input type="text" th:field="*{type[n]}"/> //Generate Dynamically

注意:这里,需要使用 JavaScript 或 JQuery 在单击“添加”按钮时动态生成这些字段。

关于java - 为 HTTP Post 创建多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55534308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com