gpt4 book ai didi

java - DomainClassConverter 在 Spring Boot 中不起作用

转载 作者:行者123 更新时间:2023-12-05 07:04:56 26 4
gpt4 key购买 nike

我有一个非常简单的 Spring Boot MVC 项目,我在其中尝试使用 DomainClassConverter 直接加载实体。但似乎没有找到 DomainClassConverter。访问 'localhost:8080/one/2' url 时出现以下错误:

无法将“java.lang.String”类型的值转换为所需类型“com.example.test.data.Customer”:找不到匹配的编辑器或转换策略

但是 DomainClassConverter 应该由 Spring Boot 启用并管理转换。

我还尝试通过 @EnableSpringDataWebSupport 注释显式启用它,但它也不起作用。

这是我的 Controller 代码:

@Controller
public class TestController {

@Autowired
private CustomerRepository customerRepository;

@GetMapping("/all")
public void all(Model model) {
Iterable<Customer> customers=customerRepository.findAll();
model.addAttribute("customers",customers);
};

@GetMapping("/one/{customer_id}")
public void one(@PathVariable("customer_id") Customer customer, Model model) {
model.addAttribute("customer",customer);
};
}

客户代码:

@Entity
public class Customer {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Getter
private Long id;

@Getter
@Setter
private String firstName;

@Getter
@Setter
private String lastName;

protected Customer() {
}

public Customer(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}

}

CustomerREpositoy:

public interface CustomerRepository extends PagingAndSortingRepository<Customer, Long> {

List<Customer> findByLastName(String lastName);

Customer findById(long id);
}

应用:

@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class);
}
}

最后是 build.graddle:

plugins {
id 'org.springframework.boot' version '2.3.1.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '14'

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
// testImplementation 'org.springframework.security:spring-security-test'
}

test {
useJUnitPlatform()
}

有什么想法吗?

最佳答案

您尝试获取 customer_id(路径变量)作为 Customer 对象。因此,当您尝试访问 localhost:8080/one/2 时出现上述错误。

customer_id(路径变量)数据类型更改为相关数据类型(String、int 等),如下所示,

@GetMapping("/one/{customer_id}")
public void one(@PathVariable("customer_id") String customerId, Model model) {
----
};

关于java - DomainClassConverter 在 Spring Boot 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62837089/

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