我有两种方法可以在银行中创建数据,一种创建公寓,另一种创建居民,并在创建居民时使用公寓的数据。
在将公寓设置为居民时,我使用spring mvc的convert实现从id更改为string。
但是当我创建公寓时,如果转换器的实现在我的类中扩展了WebMvcConfigurerAdapter。我无法创建公寓,因为同样无法将id保存为数据库中的字符串。
如何禁用转换的实现,并仅在调用创建居民的方法时使用它。
这是我的转换器类
@Component
public class AddApartConverter implements Converter<Object, Apartamento> {
@Autowired(required = false)
ApartamentoService apartamentoService;
public Apartamento convert(Object element) {
if (element == null) { return null; }
Integer id = Integer.parseInt((String) element);
Apartamento apartamento = apartamentoService.findById(id);
return apartamento;
}
}
这是错误
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleTypeMismatch
警告:无法绑定请求元素:org.springframework.beans.TypeMismatchException:无法将[br.com.grandvalley.pub.model.Apartamento]类型的值转换为所需类型[br.com.grandvalley.pub。 model.Apartamento];嵌套异常是org.springframework.core.convert.ConversionFailedException:无法从类型[br.com.grandvalley.pub.model.Apartamento]转换为类型[@javax.validation.Valid br.com.grandvalley.pub.model。公寓价值&#39;公寓[id = null,bloco = 1,apartamento = 101]&#39;嵌套异常是java.lang.ClassCastException:br.com.grandvalley.pub.model.Apartamento不能强制转换为java.lang.String
这就是我需要做的事情
如果我放入实现WebMvcConfigurerAdapter的类
@Override
Public void addFormatters (FormatterRegistry registry) {
Registry.addConverter (addApartConverter);
}
公寓:
创建公寓的方法不起作用,并显示提到的转换错误。
如果我对这段代码发表评论,那就是创建公寓的方法。
居住:
如果数据库中有公寓,我只能注册居民。
如果我在数据库中插入以创建公寓。
通过选择来自数据库列表的公寓来注册居民,该寄存器有效,因为它将公寓ID转换为字符串。
因此,要使公寓注册工作,它不能将公寓ID转换为字符串
我需要的是转换不是通过创建公寓的方法来调用的。只有在创造居民时才会被召唤