2011-02-24 90 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