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

erro no link do html com ModelAndView

Pessoal, tenho um controller ModelAndView funcionando que me vai me dando essa URL variável abaixo, porem dentro do meu HTML por exemplo eu tenho um a logo que deveria me jogar para a index e ao clicar ele me da o erro abaixo, alguém poderia me explicar como insiro esses links no meu HTML, pois ele esta pegando o link e passando como variável na url, quando ele deveria apenas fazer http://localhost:8084/Head2Head/index

[ERRO AO CLICAR LINK DENTRO HTML]

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'index' at line 1

[URL VARIÁVEL]

http://localhost:8084/Head2Head/outprofile/6894312794

[CONTROLLER]

@Controller
public class OutProfileController {

    @RequestMapping("/outprofile/{id}")
    public ModelAndView outProfile(@PathVariable("id") String id) throws SQLException {

        UsuarioDTO usuarioDTO = new UsuarioDTO();
        UsuarioDAO usuarioDAO = new UsuarioDAO();
        ResultadoDAO resultadoDAO = new ResultadoDAO();
        AnaliticoMesTotalDAO analiticoTotalDAO = new AnaliticoMesTotalDAO();
        AnaliticoMesTotalDTO analiticoTotalDTO = new AnaliticoMesTotalDTO();

        usuarioDTO.setUrlProfile(id);
        usuarioDAO.buscaPorURL(usuarioDTO);
        analiticoTotalDTO.setIdAnaliticoMesTotal(usuarioDTO.getIdUsuario());

        List<ResultadoDTO> listResultadoDTO = resultadoDAO.selecionaTopProfile(usuarioDTO.getIdUsuario());

        ModelAndView modelAndView = new ModelAndView("/outprofile");
        modelAndView.addObject("listaResultados", listResultadoDTO);
        modelAndView.addObject("positNegat", analiticoTotalDAO.buscaPorIdPositivosNegativos(analiticoTotalDTO, usuarioDTO.getIdUsuario()));
        modelAndView.addObject("analiticoTotal", analiticoTotalDAO.buscaPorId(analiticoTotalDTO));
        modelAndView.addObject("usuario", usuarioDTO);
        return modelAndView;
    }
6 respostas

Oi Rodrigo, tudo bom?

Parece que sua url está pegando index, ao invés de retornar para a home. Tenta adicionar uma barra antes do seu link que vai para a home. Assim, ele pegara o caminho relativo à raiz. Algo como:

<a href="/index">Home</a>

Pela mensagem de erro que mostrou parece que está retornando erro de SQL:

You have an error in your SQL syntax; ....

Recomendaria verificar as consultas que são chamadas ao clicar no link.

André/Wolmir

o que esta acontecendo é que ao clicar no meu link HOME que pode estar das duas maneiras abaixo

<a href="/index">Home</a>
<a href="index">Home</a>

ele pega esse INDEX e passa no meu ID como mostrado abaixo no controller, e faz a consulta com esse INDEX que deveria me levar para a minha página de index e não passar isso no meu ID.

@RequestMapping("/outprofile/{id}")
    public ModelAndView outProfile(@PathVariable("id") String id)

se alguém não entender eu tento detalhar mais o problema.

Entendi, neste caso ele deveria estar chamando no browser algo neste sentido:

/outprofile/index

Mas se mesmo assim está caindo ai, minha sugestão seria alterar a url de /outprofile/{id} adicionando outro parâmetro, por exemplo: /outprofile/perfil/{id} pelo menos pode testar se realmente é este o problema.

Vamos la

[assim eu caio no meu index] até ai ok!

http://localhost:8084/Head2Head/
http://localhost:8084/Head2Head/Index

[acessando outprofile/{id}] eu caio no profile do usuário variando de acordo com o ID

http://localhost:8084/Head2Head/outprofile/3940802316

Ao clicar dentro de qualquer menu dentro de outprofile/{id} como por exemplo voltar ao index

<a href="/index">Home</a>
<a href="index">Home</a>

eu deveria retornar para

http://localhost:8084/Head2Head/
http://localhost:8084/Head2Head/Index

e não para

http://localhost:8084/Head2Head/outprofile/index

como vem acontecendo.

e agora, minha cabeça esta fumaçando...

solução!

Bom, consegui resolver da seguinte forma

${pageContext.servletContext.contextPath}

Dessa forma volto a raiz do projeto

${pageContext.servletContext.contextPath} /index

vou para index ou para onde quiser.