在我的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