简体   繁体   中英

Spring mvc character encoding error

Having a dispachetServlet configured as:

@Override
protected Filter[] getServletFilters()
{
    return new Filter[] { new HiddenHttpMethodFilter(), characterEncodingFilter() };
}

private static final String CHARACTER_ENCODING = "UTF-8";

private CharacterEncodingFilter characterEncodingFilter()
{
    final CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
    characterEncodingFilter.setEncoding( CHARACTER_ENCODING );
    characterEncodingFilter.setForceEncoding( true );
    return characterEncodingFilter;
}

And a meta on html as:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Why when I submit a form with text characters: ç, ñ... I'm getting on controller wrong characters like: çaça

How can I fix it?

UPDATED

I'm using thymeleaf instead of jsp and I'm getting parameters:

@RequestMapping( value = REGISTRATION, method = POST )
public String processRegistration( @ModelAttribute("userForm") User user, Model model )
{
    if( userService.existEmail(user)  )
    {
        model.addAttribute("duplicatedMail", true);
        return REGISTRATION_VIEW;
    }
    if( userService.existUsername(user)  )
    {
        model.addAttribute("duplicatedUsername", true);
        return REGISTRATION_VIEW;
    }
    userService.register( user );
    return REGISTRATION_SUCCESS_VIEW;
}

Try following:

return new Filter[] { characterEncodingFilter(), new HiddenHttpMethodFilter() };

Note: You need to add CharacterEncodingFilter before HiddenHttpMethodFilter since latter calls ServletRequest.getParameter method internally.

Hope this helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM