Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

no matching editors or conversion strategy found

Muito boa noite senhores,

Estou tentando através deste controlador abaixo:

@RequestMapping(value = "/gravarPF", method = RequestMethod.POST)
    public ModelAndView gravarPF(@Valid Pessoa pessoa, BindingResult result, RedirectAttributes redirectAttributes) {

        if (result.hasErrors()) {
            return formPF(pessoa);
        }

        pessoaDAO.gravar(pessoa);

        redirectAttributes.addFlashAttribute("msgSucesso", "Locatário cadastrado com sucesso");
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("redirect:pessoaFisicaSucesso");
        modelAndView.addObject("pessoa", pessoa);
        return modelAndView;
    }

Salvar uma entidade e retornar a seguinte view:

<div class="main">
            <div class="container">
                <br />
                <div class="col-xs-12">

                    <h3><fmt:message key="lista"/></h3>
                    <hr/>
                    <p>${msgSucesso}</p>
                    <table class="table table-striped table-hover table-bordered">
                        <thead>
                            <tr>
                                <th><fmt:message key="lista.table-header-pf-nome"/></th>
                                <th><fmt:message key="lista.table-header-pf-rg"/></th>
                                <th><fmt:message key="lista.table-header-pf-documento"/></th>
                                <th><fmt:message key="lista.table-header-pf-telefoneResidencial"/></th>
                            </tr>
                        </thead>
                        <tbody>
                                <tr>
                                    <td>${pessoa.nome }</td>
                                    <td>${pessoa.rg }</td>
                                    <td>${pessoa.documento }</td>
                                    <td>${pessoa.telefoneResidencial }</td>
                                </tr>
                        </tbody>
                        <tfoot>
                        </tfoot>
                    </table>

                </div>
            </div>
        </div>

E estou tomando o erro:

Failed to convert value of type 'br.com.srm.model.locatario.Pessoa' to required type 'java.lang.String'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'br.com.srm.model.locatario.Pessoa' to required type 'java.lang.String': no matching editors or conversion strategy found

Pensava eu que após adicionar um objeto no modelAndView eu iria poder acessar as suas propriedades normalmente através da String associada, mas pelo visto não!

Estou revendo o material do curso e também lendo o livro Spring MVC, mas os exemplos envolvendo conversores são para adicionar um conversor para a data.

Nesse caso exposto aqui, o que estaria sendo feito de errado ? Grato.

4 respostas

tem certeza que o erro tem a ver com o redirect? achei meio estranho.. cadê o formulário que posta para esse endereço?

solução!

Alberto eu estava seguinte um fluxo nas requisições formulário -> controlador, onde eu já adicionada no modelAndView a mesma entidade acabou de vir do form -> página de listagem dos dados cadastrados. Seguindo esse fluxo eu tomava esse erro de conversão ai na cara.

Coloquei do modo mais padrão novamente: form -> controlador,onde esse redireciona para um método que esse sim traz a lista e adiciona no modelAndView -> retorna pra página com a listagem carregada.

Dessa forma não ocorre nenhum erro de conversão. De qualquer forma, como você perguntou o form é basicamente esse aqui:

<form:form action="${s:mvcUrl('PC#gravarPF').build() }" method="POST" modelAttribute="pessoa" id="formPF">
                        <div class="form-group">

                            <label>Nome</label>
                            <input type="text" name="nome" class="form-control" placeholder="<fmt:message key='form.nome'/>" required/>
                        </div>
                        <div class="form-group messages-alert">
                            <form:errors path="nome"></form:errors>
                        </div>
</form:form>

Como eu disse, o problema já foi solucionado. Mas, algo que lhe chame atenção aí?

nada mesmo.. vou pesquisar mais sobre esse erro, achei bem estranho.

Ok Alberto, mas por hora eu vou marcar como solução a minha própria resposta, pois não se vale a pena eu solicitar que dispenda tempo seu com algo que já foi solucionado! Sem problema! grato!