2012-02-09 3 views
0

jsf 2 (primefaces) + 스프링 3 다중 모듈 프로젝트를 작업하고 있습니다.스프링 3 용 JSF 2 뷰 해석기

봄 콩은 다른 재사용 가능한 모듈의 도메인 논리에 따라 그룹화됩니다. 내 모든 xhtml 페이지와 리소스가 war 모듈에 어떻게 배치됩니까?

이제 프로덕션 환경에 배포하면 안되기 때문에 일부 모듈과 리소스를 일부 모듈로 이동해야합니다.

나는 봄에 viewResolver 콩이 있고 다른 모듈의 페이지와 자원에 논리 이름을 매핑 할 수 있음을 알았으며이 논리 이름을 사용하여 내 워 모듈에서 자원을 알지 못하거나 자원을 참조하지 않고 정의 할 수 있습니다 다른 모듈.

나에게 분명하지는 않지만이를 수행하는 방법은 무엇입니까? 모범이나 블로그 또는 조언을 가르쳐 주시겠습니까?

+0

스프링은 IOC 컨테이너, 스프링 WebFlow, 스프링 MVC 등 다양한 스프링 솔루션의 우산 이름입니다. JSF 2에서 사용하는 스프링의 특정 부분에 대해 자세히 설명하십시오. –

답변

3

JSF에서 당신이 확장 Facelets에 의해 그것을 달성 할 수 DefaultResourceResolver

public class PackegedResourceResolver extends DefaultResourceResolver { 

    @Override 
    public URL resolveUrl(String resource) { 
     URL resourceUrl = super.resolveUrl(resource); 

     if (resourceUrl == null) { 
      resourceUrl = PackegedResourceResolver.class.getResource("/META-INF/pages/" + resource); 
     } 

     return resourceUrl; 
    } 

} 

의 web.xml에 등록 :

<context-param> 
    <param-name>facelets.RESOURCE_RESOLVER</param-name> 
    <param-value>com.example.facelets.PackegedResourceResolver</param-value> 
</context-param> 

PackegedResourceResolver 기본 자원 리졸버를 사용하고 아무 것도 발견되지 않으면 볼 것이다 클래스 패스에있는 각 항아리의 /WEB-INF/pages 아래. .xhtml 페이지를 /META-INF/pages 아래에 클래스 패스에서 사용할 수있는 모든 병 (모듈) 안에 둘 수 있음을 의미합니다.

약간의 수정을하면이 방법을 사용하여 전쟁의/WEB-INF/dir 아래에있는 .xhtml 소스를 숨길 수 있습니다.

+0

이것은 Facelets 1.x입니다. JSF 2.x를 사용하고 있습니다. 또한/WEB-INF/lib에있는 임의의 JAR의'/ META-INF/resources'에있는 리소스는 사용자 정의 리졸버 없이도 자동으로 스캔됩니다. – BalusC

+0

나는 xhtml 구성 요소를 WAR webapp/resources 디렉토리에 넣었지만 동의하지 않는다. JAR META-INF/resources에 넣으면 작동하지 않습니다. 구성 요소를 설명하는 태그 라이브러리 xml을 작성해야했습니다. images, css, js 같은 리소스가 있지만 xhtml 파일은 이와 같이 작동하지 않습니다. – Dimitrii