Whiteship's Note

'FacesContextUtils'에 해당되는 글 1건

  1. 2007.12.27 15.3. JavaServer Faces (2)

15.3. JavaServer Faces

Spring/Chapter 15 : 2007.12.27 22:55


15.3.1. DelegatingVariableResolver

JSF 웹 계층과 스프링의 미들티어와 연동하는 가장 쉬운 방법은 DelegatingVariableResolver 클래스를 사용하는 것입니다.

faces-context.xml 파일을 다음과 같이 수정합니다.

<faces-config>
  <application>
    <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
      <locale-config>
        <default-locale>en</default-locale>
        <supported-locale>en</supported-locale>
        <supported-locale>es</supported-locale>
      </locale-config>
      <message-bundle>messages</message-bundle>
    </application>
</faces-config>

DelegatingVariableResolver는 먼저 값을 가져오는 것을 JSF 구현체의 기본 리졸버에게 위임할 것이고, 그 다음에 스프링의 비즈니스 문맥이 담긴 WebApplicationContext에 위임합니다. 이 방법을 사용해서 간단하게 JSF에 의해 관리되는 bean들에 의존성을 주입할 수 있습니다.

JSF가 관리하는 bean들은 faces-config.xml에 정의 되어 있으며 아래의 예제에서 #{userManager}는 스프링의 비즈니스 문맥으로부터 가져오는 bean을 나타냅니다.

<managed-bean>
  <managed-bean-name>userList</managed-bean-name>
    <managed-bean-class>com.whatever.jsf.UserList</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  <managed-property>
    <property-name>userManager</property-name>
    <value>#{userManager}</value>
  </managed-property>
</managed-bean>

15.3.2. FacesContextUtils

faces-config.xml에 있는 bean들(JSF 빈)의 한 프로퍼티를 주입할 때는 위와 같은 방법이 용이합니다. 그러나 명시적으로 스프링 bean이 왕창 필요할 때는  FacesContextUtils를 사요할 수 있습니다.

ApplicationContext ctx = FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance());

WebApplicationContextUtils 와 사용법은 유사하며 차이점은 인자로 facesContext를 넘겨준다는 것입니다.

'Spring > Chapter 15' 카테고리의 다른 글

15.3. JavaServer Faces  (2) 2007.12.27
15.2. Common configuration  (0) 2007.12.27
Integrating with other web frameworks  (0) 2007.12.27
top

  1. remnant 2010.06.02 00:40 PERM. MOD/DEL REPLY

    안녕하세요.
    저도 이번 해에 들어 처음으로 Spring과 Spring Security 를 배우게 되었는데요. JSF로 custom tag library를 만들었어요. 근데, renderer 클래스를 implement한 클래스를 unit test 하려고 하는데요. 자꾸만 "FacesContextUtils.getWebApplicationContext(facesContext)" 가 들어있는 곳을 testing하려하면 NullPointerException 에러가 나네요.

    FacesContextUtils 에서 51번째 줄에서 에러가 난다해서 찾아보니..

    Object attr = facesContext.getExternalContext().getApplicationMap().get(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);

    아마도 getApplicationMap부분에서 부터 에러가 나는듯 싶습니다. 현재 mockito도 써봤고 easyMock 과 jmock도 사용해봤는데. 전부다 같은 에러에서 끝나는군요.

    혹시나 어떻게 이 문제를 풀어야할지 아시거나 추천해주실만한 소스 있으시면 좋겠네요.

    whiteship님의 블로그만큼 스프링을 제대로 카버하는 곳이 한국 블로그 중에는 없는듯 하네요.ㅋㅋ

    그럼 답장 기다리겠습니다. (pam0708@gmail.com)

    mark

    Favicon of http://whiteship.me BlogIcon 기선 2010.06.02 17:23 PERM MOD/DEL

    에러 스택을 보지 않고선 감을 못잡겠네요;
    이런건 KSUG 포럼에 올려주시면 저 말고도 여러 뛰어난 개발자 분들이 도움을 주실 것 같습니다.

Write a comment.