2013-01-24 47 views
1

在頁面「login.jsp」中,變量「title」的值無法傳送到「default.jsp」頁面中的標題標籤,更多特別是代碼「參數」。當我訪問登錄網址時,頁面的標題實際上是「{0} - CompanyName」。這是不正確的,它應該是「登錄 - 公司名稱」。請幫忙。彈出消息i18n with spring-mvc 3.2 + jsp + tiles 3

----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 

回答

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"; 
}