1

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

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

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

javax.servlet.ServletException:javax.servlet.jsp.JspTagException:在语言环境“en_US”的代码“label.title”下找不到消息

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

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

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

谢谢!

4

2 回答 2

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”的视图

于 2012-07-13T13:11:57.710 回答
1

利用

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

然后直接在jsp中引用内容为

<spring:message code="lable.name" />
于 2012-07-13T04:14:46.913 回答