java - 我有关于构造函数(Spring boot 和 Vaadin)
问题描述
打开调试器时我的项目出错
org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.example.vaadin.DTO.ContactInfo]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.example.vaadin.DTO.ContactInfo` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
我的项目,一些课程。似乎他正确地编写了所有内容,获得了必要的注释,但是他给了我一个错误,并通过了调试器。可以看一下代码,可能是项目中写错了什么。我想在界面中显示域信息
我的代码
@Data
@AllArgsConstructor
public class ContactInfo {
private String handle;
private String name;
private String voice;
private String fax;
private String email;
}
主视图
@Route
@Service
public class MainView extends VerticalLayout {
RestTemplate restTemplate = new RestTemplate();
public String URL() {
return "http://localhost:8080/api/whois";
}
private ResponseEntity<DomainDTO> domainDTO(String url, Request request) {
// return restTemplate.postForObject(url, request, DomainDTO.class);
ResponseEntity<DomainDTO> domainDTOResponseEntity = restTemplate.postForEntity(url, request, DomainDTO.class);
System.out.println(">>>>>>>>>>>>>>>" + domainDTOResponseEntity); ///////////////////////
return domainDTOResponseEntity;
}
public MainView() {
FormLayout formLayout = new FormLayout();
TextField textField = new TextField();
textField.setPlaceholder("please input domain");
textField.setWidth("630px");
textField.setHeight("50px");
Text text1 = new Text("");
VerticalLayout v1 = new VerticalLayout();
v1.add(text1);
Button button = new Button("SHOW");
button.addClickListener(event -> {
DomainDTO dto = domainDTO(URL(), new Request(textField.getValue())).getBody();
text1.setText(report(dto));
}
);
button.addThemeVariants(ButtonVariant.LUMO_PRIMARY);
formLayout.addFormItem(textField, "DOMAIN");
button.setWidth("30%");
formLayout.addFormItem(button, " ");
add(formLayout, v1);
}
private String report(DomainDTO dto) {
StringBuffer sb = new StringBuffer();
sb
.append("Domain Name............: ").append(dto.getDomainInfo().getDomainName()).append(System.lineSeparator())
.append(System.lineSeparator())
.append("Organization Using Domain Name").append(System.lineSeparator())
.append("Name...................: ").append(dto.getDomainInfo().getName()).append(System.lineSeparator())
.append("Organization Name......: ").append(dto.getDomainInfo().getOrganizationName()).append(System.lineSeparator())
.append("Street Address.........: ").append(dto.getDomainInfo().getStreetAddress()).append(System.lineSeparator())
.append("City...................: ").append(dto.getDomainInfo().getCity()).append(System.lineSeparator())
.append("State..................: ").append(dto.getDomainInfo().getState()).append(System.lineSeparator())
.append("Postal Code............: ").append(dto.getDomainInfo().getPostalCode()).append(System.lineSeparator())
.append("Country................: ").append(dto.getDomainInfo().getCountry()).append(System.lineSeparator())
.append(System.lineSeparator())
.append("Administrative Contact/Agent").append(System.lineSeparator())
.append("Nick Handle............: ").append(dto.getContactInfo().getHandle()).append(System.lineSeparator())
.append("Phone Number...........: ").append(dto.getContactInfo().getVoice()).append(System.lineSeparator())
.append("Fax....................: ").append(dto.getContactInfo().getFax()).append(System.lineSeparator())
.append("Email Address..........: ").append(dto.getContactInfo().getEmail()).append(System.lineSeparator())
.append(System.lineSeparator())
.append("Nameserver in listed order").append(System.lineSeparator())
.append(System.lineSeparator());
dto.getHostInfo().forEach(hInfo -> sb
.append("Server.................: ").append(hInfo.getName()).append(System.lineSeparator())
.append("Ip address.............: ").append(hInfo.getIpaddr()).append(System.lineSeparator())
.append(System.lineSeparator())
);
sb.append(System.lineSeparator());
dto.getStatusInfo().forEach(sInfo -> sb
.append("Domain created: ").append(sInfo.getCreated()).append(System.lineSeparator())
.append("Last modified: ").append(sInfo.getUpdated()).append(System.lineSeparator())
.append("Domain status: ").append(sInfo.getStatus()).append(System.lineSeparator())
.append("Registrar created: ").append(sInfo.getRegistarcr()).append(System.lineSeparator())
.append("Current Registrar: ").append(sInfo.getRegistrar()).append(System.lineSeparator())
.append(System.lineSeparator())
);
return sb.toString();
}
}
域DTO
@Data
@AllArgsConstructor
public class DomainDTO {
private DomainInfo domainInfo;
private ContactInfo contactInfo;
private List<HostInfo> hostInfo;
private List<StatusInfo> statusInfo;
}
应用配置
@Configuration
public class AppConfig {
@Bean
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
解决方案
您还需要在 ContactInfo 和 DomainDTO 类中的 @AllArgsConstructor 之后添加注释 @NoArgsConstructor
推荐阅读
- javascript - 在 Visual Studio 2017 中使用 Javascript 作为 cordova 项目的钩子
- java - 使用 Java 流从列表中获取第 n 个元素
- python - TensorFlow 时间线显示训练步骤之间的长时间停顿。这是什么原因?
- c# - 单击 DataGrid 时动画丢失
- sql-server - SQL Server Management Studio 持续无响应且速度非常慢
- github - 从 travis 构建修改 github 公共存储库
- php - 服务器上的codeigniter href链接
- php - 为什么没有错误存储在指定的 error_log 文件中?
- build - 检查 NAnt 脚本中的 NAnt 版本
- windows-10 - StartService FAILED 1053: 服务没有及时响应启动或控制请求