No corresponding editors or conversion strategy found

Asked

Viewed 27 times

0

By clicking to search it gives the following error below, but when I take the formatting of the mask in Webconfig works normally. Someone can help?

Failed to Convert value of type [java.lang.String] to required type [br.com.npisistemas.planos.model.Plano]; nested Exception is is java.lang.Illegalstateexception: Cannot Convert value of type [java.lang.String] to required type [br.com.npisistemas.planos.model.Plano]: no matching Editors or Conversion Strategy found.

Model:

private static final long serialVersionUID = 1L;

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

@NotBlank(message = "Descrição é obrigatória")
private String descricao;

@NotNull(message = "Valor adesão é obrigatória")
@Column(name = "valor_adesao")
private BigDecimal valorAdesao;

@NotNull(message = "Valor parcela é obrigatória")
@Column(name = "valor_parcela")
private BigDecimal valorParcela;

@NotNull(message = "Periodicidade é obrigatória")
@Enumerated(EnumType.STRING)
private Periodicidade periodicidade;

@Column(name = "possui_seguro")
private Boolean possuiSeguro;

@NotNull(message = "Tipo pessoa é obrigatória")
@Enumerated(EnumType.STRING)
@Column(name = "tipo_pessoa")
private TipoPessoa tipoPessoa;

private Boolean status;

private String observacao;

public Long getId() {
    return id;
}   
public void setId(Long id) {
    this.id = id;
}   
public String getDescricao() {
    return descricao;
}   
public void setDescricao(String descricao) {
    this.descricao = descricao;
}   
public BigDecimal getValorAdesao() {
    return valorAdesao;
}   
public void setValorAdesao(BigDecimal valorAdesao) {
    this.valorAdesao = valorAdesao;
}   
public BigDecimal getValorParcela() {
    return valorParcela;
}   
public void setValorParcela(BigDecimal valorParcela) {
    this.valorParcela = valorParcela;
}   
public Periodicidade getPeriodicidade() {
    return periodicidade;
}   
public void setPeriodicidade(Periodicidade periodicidade) {
    this.periodicidade = periodicidade;
}   
public Boolean getPossuiSeguro() {
    return possuiSeguro;
}
public void setPossuiSeguro(Boolean possuiSeguro) {
    this.possuiSeguro = possuiSeguro;
}   
public TipoPessoa getTipoPessoa() {
    return tipoPessoa;
}
public void setTipoPessoa(TipoPessoa tipoPessoa) {
    this.tipoPessoa = tipoPessoa;
}   
public Boolean getStatus() {
    return status;
}   
public void setStatus(Boolean status) {
    this.status = status;
}   
public String getObservacao() {
    return observacao;
}   
public void setObservacao(String observacao) {
    this.observacao = observacao;
}   
public boolean isNovo() {
    return this.id == null;
}
@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((id == null) ? 0 : id.hashCode());
    return result;
}
@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Plano other = (Plano) obj;
    if (id == null) {
        if (other.id != null)
            return false;
    } else if (!id.equals(other.id))
        return false;
    return true;
}   
}

Webconfig:

private ApplicationContext applicationContext;

@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    this.applicationContext = applicationContext;
}

@Bean
public ViewResolver viewResolver() {
    ThymeleafViewResolver resolver = new ThymeleafViewResolver();
    resolver.setTemplateEngine(templateEngine());
    resolver.setCharacterEncoding("UTF-8");
    return resolver;
}

@Bean
public TemplateEngine templateEngine() {
    SpringTemplateEngine engine = new SpringTemplateEngine();
    engine.setEnableSpringELCompiler(true);
    engine.setTemplateResolver(templateResolver());
    engine.addDialect(new LayoutDialect());
    engine.addDialect(new ErpDialect());
    engine.addDialect(new DataAttributeDialect());
    return engine;
}

private ITemplateResolver templateResolver() {
    SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
    resolver.setApplicationContext(applicationContext);
    resolver.setPrefix("classpath:/templates/");
    resolver.setSuffix(".html");
    resolver.setTemplateMode(TemplateMode.HTML);
    return resolver;
}

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
     
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
}

@Bean
public FormattingConversionService mvcConversionService() {
    DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();
    
    NumberStyleFormatter bigDecimalFormatter = new NumberStyleFormatter("#,##0.000");
    conversionService.addFormatterForFieldType(BigDecimal.class, bigDecimalFormatter);

    return conversionService;
}

@Bean
public LocaleResolver localeResolver() {
    return new FixedLocaleResolver(new Locale("pt", "BR"));
}

}

Controller:

@Autowired
private CadastroPlanoService cadastroPlanoService;

@Autowired
private Planos planos;

// Mapeamento da URL - GET.
@RequestMapping("/novo")
public ModelAndView novo(Plano plano) {
    ModelAndView mv = new ModelAndView("plano/CadastroPlano");
    mv.addObject("periodicidades", Periodicidade.values());
    mv.addObject("tipoPessoas", TipoPessoa.values());
    return mv; 
}

// Mapeamento da URL - POST.
@RequestMapping(value = { "/novo", "{\\d+}" }, method = RequestMethod.POST)
public ModelAndView salvar(@Valid Plano plano, BindingResult result, Model model,
        RedirectAttributes attributes) {
    if (result.hasErrors()) {
        return novo(plano);
    }
    
    cadastroPlanoService.salvar(plano);
    attributes.addFlashAttribute("mensagem", "Plano salvo com sucesso!");
    return new ModelAndView("redirect:/planos/novo");
}

// Metodo GET - Pesquisa.
@GetMapping
public ModelAndView pesquisar(PlanoFilter planoFilter, BindingResult result,
        @PageableDefault(size = 10) Pageable pageable, HttpServletRequest httpServletRequest) {
    ModelAndView mv = new ModelAndView("plano/PesquisaPlano");
    mv.addObject("tipoPessoas", TipoPessoa.values());
    
    PageWrapper<Plano> paginaWhapper = new PageWrapper<>(planos.filtrar(planoFilter, pageable), 
            httpServletRequest);
    mv.addObject("pagina", paginaWhapper);
    return mv;
}

// Metodo DELETE - Deletar
@DeleteMapping("/{id}")
public @ResponseBody ResponseEntity<?> excluir(@RequestBody @PathVariable("id") Plano plano) {
    try {
        cadastroPlanoService.excluir(plano);
    } catch (ImpossivelExcluirEntidadeException e) {
        return ResponseEntity.badRequest().body(e.getMessage());
    }
    
    return ResponseEntity.ok().build();
}

// Metodo GET - Alterar
@GetMapping("/{id}")
public ModelAndView editar(@PathVariable("id") Plano plano) {
    ModelAndView mv = novo(plano);
    mv.addObject(plano);
    return mv;
}

}
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.