我可以在Spring中直接调用JSP时使用Message Resource Bundle

时间:2012-07-12 08:54:37

标签: spring jsp localization spring-security resourcebundle

我正在使用Spring 3.0并使用spring security进行登录。我已将login.jsp页面放在webapp文件夹中,我正在尝试使用消息进行本地化支持,例如:

<spring:message code="label.title"/>

不幸的是,jsp找不到给出错误的消息:

  

javax.servlet.ServletException:javax.servlet.jsp.JspTagException:在代码'label.title'下找不到针对locale'en_US'的消息

当我在通过控制器的jsp中使用消息代码时,它可以正常工作。

由于当用户未登录时,spring security会重定向到login.jsp页面,因此将在没有控制器的情况下(直接)处理页面。

任何人都知道如何在不通过控制器时让jsp看到资源包吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

你必须强制Spring渲染页面login.jsp,它实际上不是由Spring管理的。所以,创建一个虚拟控制器:

/**
 * UI Controller that renders the signin-form.
 */
@Controller
public class SigninController {

    /**
     * Render the signin form to the person as HTML in their web browser.
     * Returns void and relies in request-to-view-name translation to kick-in to
     * resolve the view template to render.
     */
    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public void login() {
    }
} 

并根据您使用的ViewResolver(TilesViewResolver,UrlBasedViewResolver ...)创建名为“login”的视图

答案 1 :(得分:1)

使用

<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>

然后直接在jsp中引用内容

<spring:message code="lable.name" />