在我的Spring应用程序中,我希望添加一个可配置的系统消息,可以在每个页面上显示。例如“系统在10分钟内停机”。从JSP访问Spring的全局值
我需要在全球范围内存储此值,但我不能任意代码添加到控制器,因为我不希望有改变他们中的每一个。我想过使用@Service,但我不知道如何直接从JSP访问它。
我很高兴地使用JSP脚本方式就可以得到我所需要的。有任何想法吗?
在我的Spring应用程序中,我希望添加一个可配置的系统消息,可以在每个页面上显示。例如“系统在10分钟内停机”。从JSP访问Spring的全局值
我需要在全球范围内存储此值,但我不能任意代码添加到控制器,因为我不希望有改变他们中的每一个。我想过使用@Service,但我不知道如何直接从JSP访问它。
我很高兴地使用JSP脚本方式就可以得到我所需要的。有任何想法吗?
另一个想法是将消息放在应用程序范围内? 许多人都不知道除了请求,会话和页面之外,还有一个范围。
在该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" />
你可以用属性文件来做到这一点。为了做到这一点,将一个名为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"/>
利用此解决方案我不得不编辑服务器上的messages.properties,它会更新消息? – Steve 2011-02-24 09:21:15
是的,你只需要更新messages.properties,因为每次加载页面时,所有的jsp页面都会在该文件中调用相同的消息。 – Neets 2011-02-24 10:01:32