2011-02-24 57 views
1

在我的Spring应用程序中,我希望添加一个可配置的系统消息,可以在每个页面上显示。例如“系统在10分钟内停机”。从JSP访问Spring的全局值

我需要在全球范围内存储此值,但我不能任意代码添加到控制器,因为我不希望有改变他们中的每一个。我想过使用@Service,但我不知道如何直接从JSP访问它。

我很高兴地使用JSP脚本方式就可以得到我所需要的。有任何想法吗?

回答

0

另一个想法是将消息放在应用程序范围内? 许多人都不知道除了请求,会话和页面之外,还有一个范围。

在该servlet,设置属性(请求被传递到的doGet/doPost方法一个HttpServletRequest对象):

request.getSession().getServletContext() 
    .setAttribute("my.sys.msg", "The system is going down in 10 minutes."); 

在JSP文件使用这样的事情:

<jsp:useBean id="my.sys.msg" scope="application" /> 
1

你可以用属性文件来做到这一点。为了做到这一点,将一个名为messages.properties文件的WEB-INF/classes目录下,这个内容的文件夹:

shutdown=The system is going down in 10 minutes. 

,那么你必须包含在你的servlet-context.xml文件,以便necesssary信息它可以查找信息在正确的文件:

<beans:bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
     <beans:property name="basename" value="/WEB-INF/classes/messages /> 
     <beans:property name="cacheSeconds" value="0" /> 

终于可以从你的JSP中的格式标记库JSTL引用该信息,例如:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
<fmt:message key="shutdown"/> 
+0

利用此解决方案我不得不编辑服务器上的messages.properties,它会更新消息? – Steve 2011-02-24 09:21:15

+0

是的,你只需要更新messages.properties,因为每次加载页面时,所有的jsp页面都会在该文件中调用相同的消息。 – Neets 2011-02-24 10:01:32