Java Spring MVC:无法将类型字符串的值转换为属性';类别';
我有一个名为Project的类,它有一个属性类别。类项目和类别具有一对多关系Java Spring MVC:无法将类型字符串的值转换为属性';类别';,java,hibernate,jsp,spring-mvc,Java,Hibernate,Jsp,Spring Mvc,我有一个名为Project的类,它有一个属性类别。类项目和类别具有一对多关系 public class Project { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name="category_id") private Category category; public class Category { @OneToMany(fetch=FetchType.LAZY, mappedBy="category") priva
public class Project {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="category_id")
private Category category;
public class Category {
@OneToMany(fetch=FetchType.LAZY, mappedBy="category")
private Set<Project> project = new HashSet<Project>(0);
我正在尝试添加一个项目,但一直出现此错误。谁能告诉我我做错了什么
Field error in object 'project' on field 'category': rejected value [3];
codes [typeMismatch.project.category,typeMismatch.category,typeMismatch.model.Category,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [project.category,category]; arguments []; default message [category]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'model.Category' for property 'category'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [model.Category] for property 'category': no matching editors or conversion strategy found]
这个想法很直截了当。你必须做两件事
org.springframework.core.convert.converter.converter
的类,其中S(源代码)是您在表单中提到的java.lang.String
T(target)是类别
。转换器接口有一个必须实现的抽象方法
T convert(S source);
在实现中,您必须提供将源对象转换为类别的逻辑。您可能需要@Repository
类的一些帮助
之后,您必须在WebMVC配置类中注册此转换器,该类很可能扩展了WebMVC配置支持。您必须@重写addFormatters
方法,并在那里注册转换器李>
所以会是这样的
转换器类的实现
@Component
public Class StringToCategoryConverter implements Converter<String, Category> {
@AutoWired
private CategoryRepository repository;
@Override
public Category convert(final String source) {
return repository.getCategoryById(source);
}
}
希望能有帮助。这个想法很直截了当。你必须做两件事
您必须创建一个实现org.springframework.core.convert.converter.converter
的类,其中S(源代码)是您在表单中提到的java.lang.String
T(target)是类别
。转换器接口有一个必须实现的抽象方法
T convert(S source);
在实现中,您必须提供将源对象转换为类别的逻辑。您可能需要@Repository
类的一些帮助
之后,您必须在WebMVC配置类中注册此转换器,该类很可能扩展了WebMVC配置支持。您必须@重写addFormatters
方法,并在那里注册转换器李>
所以会是这样的
转换器类的实现
@Component
public Class StringToCategoryConverter implements Converter<String, Category> {
@AutoWired
private CategoryRepository repository;
@Override
public Category convert(final String source) {
return repository.getCategoryById(source);
}
}
希望能有帮助。非常感谢。我一直在努力实现类似的目标已经有一段时间了,这是我见过的最好的综合。非常感谢。我一直在努力实现类似的目标已经有一段时间了,这是我见过的最好的综合。
@Component
@EnableSpringDataWebSupport
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(stringToCategoryConverter());
super.addFormatters(registry);
}
@Bean
public StringToCategoryConverter stringToCategoryConverter(){
return new StringToCategoryConverter();
}
}