【发布时间】:2020-03-13 16:30:24
【问题描述】:
我正在尝试在我的 spring 应用程序中构建一个函数,该函数可以更改本地语言以切换语言。我认为我的逻辑是正确的,但我想不是。当我点击 set locale 按钮时,它会将我带到 404
用户将在 JSP 中选择一个按钮,如 Allbeers.jsp 所示
<form action="setLocale">
<select name="locale">
<option value="en"><spring:message code="lang.english"/></option>
<option value="es"><spring:message code="lang.spanish"/></option>
</select>
<input type="submit" value="<spring:message code="button.setLocale"/>"/>
</form>
表单行为会将您带到控制器 beerController.java
@RequestMapping(value = "setLocale", method = RequestMethod.GET)
public ModelAndView SetLocale(@RequestParam("locale") String locale, HttpServletRequest request, HttpServletResponse response)
{
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
localeResolver.setLocale(request, response, StringUtils.parseLocaleString(locale));
return new ModelAndView("redirect:/beer");
}
我的 config.xml 中的 bean localeResolver
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="en_IE" />
</bean>
这是我所有的控制器代码,以防需要知道我如何映射方法
@Controller
@RequestMapping("/beer")
@SessionAttributes("beer")
public class beerController {
@Autowired
beerService service;
@RequestMapping("")
public ModelAndView getBeers() {
//int x = Integer.parseInt("abc");
return new ModelAndView("/Allbeers", "beerList", service.getAllBeers());
}
@RequestMapping(value = "setLocale", method = RequestMethod.GET)
public ModelAndView SetLocale(@RequestParam("locale") String locale, HttpServletRequest request, HttpServletResponse response)
{
LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);
localeResolver.setLocale(request, response, StringUtils.parseLocaleString(locale));
return new ModelAndView("redirect:/beer");
}
【问题讨论】:
标签: java spring internationalization locale