2011-02-24 4 views
1

Spring 어플리케이션에서 모든 페이지에 표시 할 수있는 구성 가능한 시스템 메시지를 추가하고 싶습니다. 예를 들어 "시스템이 10 분 안에 종료됩니다."JSP로부터의 Spring 액세스 전역 값

이 값을 전역으로 저장해야하지만 컨트롤러 하나 하나를 변경하지 않으려 고하므로 컨트롤러에 코드를 추가 할 수 없습니다. @Service 사용을 생각했지만 JSP에서 직접이 서비스에 액세스하는 방법을 모르겠습니다.

내가 필요한 것을 얻기 위해 JSP 스크립트 렛 표기법을 사용하여 기쁘게 생각합니다. 어떤 아이디어?

답변

0

또 다른 아이디어는 응용 프로그램 범위에 메시지를 넣는 것입니다. 많은 사람들이 요청, 세션 및 페이지 이외의 다른 하나의 범위가 있음을 인식하지 못합니다.

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

속성 파일로 수행 할 수 있습니다. 그렇게하기 위해서는, 당신의 WEB-INF/클래스에서 messages.properties라는 파일을 배치이 콘텐츠를 폴더 :

shutdown=The system is going down in 10 minutes. 

은 다음 있도록 서블릿의 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" /> 

을 마지막으로 당신은 JSTL에서 서식 태그 라이브러리를 사용하여 예를 들어 당신의 JSP에서 해당 메시지를 참조 할 수 있습니다 :

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

이 솔루션 :이처럼 JSP 파일을 사용 무언가에

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

: 서블릿에서

은 (요청이 HttpServletRequest의의의 doGet/doPost 메소드에 전달 된 객체이다) 속성을 설정 서버의 messages.properties를 편집해야하는데 메시지를 업데이트하겠습니까? – Steve

+0

예, 페이지를로드 할 때마다 모든 JSP 페이지가 해당 파일에서 동일한 메시지를 호출하기 때문에 messages.properties 만 업데이트하면됩니다. – Neets