【问题标题】:spring message i18n with spring-mvc 3.2 + jsp + tiles 3spring message i18n with spring-mvc 3.2 + jsp + tiles 3
【发布时间】:2013-01-24 08:09:20
【问题描述】:

在“login.jsp”页面中,变量“title”的值不能传递给“default.jsp”页面中的title标签,更具体地说是代码“arguments”。当我访问登录网址时,页面的标题实际上是“{0} - CompanyName”。这是不正确的,它应该是“登录 - 公司名称”。请帮忙。

----layout/tiles.xml----
<tiles-definitions>
    <definition name="default" template="/WEB-INF/views/layout/default.jsp">
        <put-attribute name="header" value="/WEB-INF/views/layout/header.jsp" />
        <put-attribute name="footer" value="/WEB-INF/views/layout/footer.jsp" />
    </definition>
</tiles-definitions>

----users/tiles.xml----
<tiles-definitions>
    <definition extends="default" name="users/login">
        <put-attribute name="body" value="/WEB-INF/views/users/login.jsp" />
    </definition>
</tiles-definitions>

----layout/default.jsp----
<head>
    <title><spring:message code="title" arguments="${title}" />
</title>
</head>
<body>
    <tiles:insertAttribute name="header" ignore="true" />
    <tiles:insertAttribute name="body" />
    <tiles:insertAttribute name="footer" ignore="true" />
</body>

----users/login.jsp----
<spring:message code="title.login" var="title" />

----layout.properties----
title = {0} - CompanyName
title.login = Login 

【问题讨论】:

    标签: jsp spring-mvc internationalization tiles


    【解决方案1】:

    已修复。当访问 url "/login" 时,标题显示 "Login - CompanyName"。访问“/blogs/123”时,标题为“Name123 - Blog - CompanyName”。完美的解决方案!

    ----servlet-context.xml----
    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
        p:fallbackToSystemLocale="false"
        p:basenames="WEB-INF/i18n/layout" />
    
    ----layout.properties----
    title = {0} - CompanyName
    title.login = Login
    title.blog = {0} - Blog
    
    ----AccessController.java----
    @Autowired
    MessageSource messageSource;
    
    @RequestMapping("/login")
    public String login(Model model, Locale locale) {
        model.addAttribute("title",
                messageSource.getMessage("title.login", null, locale));
        return "access/login";
    }
    
    ----BlogController.java----
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public String show(@PathVariable("id") Long id, Model model, Locale locale) {
        Blog blog = blogService.findById(id);
        model.addAttribute("title", messageSource.getMessage(
                "title.blog", new Object[] { blog.getName() },
                locale));
        return "blogs/show";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多