2013-10-19 4 views
0

질문
  1. 예쁜-config.xml 파일을 사용하지 않고, 프로그래밍 꽤-얼굴을 구성 할 수있는 방법이 있나요

?
  • pretty-config.xml을 사용해야하는 경우; UrlMapppings를 프로그래밍 방식으로 재정의/보완 할 수있는 방법이 있습니까?
  • 문제 상황 : 내 상황에서

    mapppings 다른 XML 자원에서 온해야하고 몇 가지 추가 논리는 그것을 향해있다. 그래서 나는 내가 prettyConfig 객체가Prettyfaces 프로그램 구성

    @Override 
    public void attributeAdded(ServletContextAttributeEvent event) { 
        Object value = event.getValue(); 
        if(value != null && value instanceof PrettyConfig){ 
         PrettyConfig prettyConfig = (PrettyConfig)value ; 
         try { 
          PrettyFacesConfigProvider provider = new PrettyFacesConfigProvider() ; 
          PrettyConfig config = provider.loadConfiguration(event.getServletContext()); 
          prettyConfig.setMappings(config.getMappings()); 
         } catch (Exception ex) { 
          Logger.getLogger(CRSWebListener.class.getName()).log(Level.SEVERE, null, ex); 
         } 
        } 
    } 
    

    PrettyFacesConfigProvider 클래스는 내 사용자 지정 매핑 구성을 기반으로 구현되는 PrettyFilter하여 서블릿 컨텍스트에 추가 될 때 모니터링 어디가 ServletContextAttributeListener을 구현 다음과 같은 솔루션을 고안했다. 업데이트 된 구성을 검사하고 모든 매핑이 제대로 추가 된 것처럼 보입니다. 그러나이 길을 택하면 매핑이 효과가 없습니다. 물론 매핑을 pretty-config.xml에 넣으면 완벽하게 작동합니다. 내가 사용하고

    는 3.3.3, JSF 2.2 꽤-에 직면, 4.0, 바람둥이 7

    답변

    0

    을 황금에 직면는 SPI 당신이 PrettyFaces 구성을 제공하는 사용자 정의 솔루션을 구현 할 수 있다는 ConfigurationProvider라고 있습니다. PrettyFaces는이 SPI를 내부적으로 사용하여 XML 또는 annotations과 같은 구성 메커니즘을 제공합니다. 그러나 SPI를 직접 사용하여 구성을 작성하는 사용자 지정 방법을 구현할 수도 있습니다.

    그냥 ConfigurationProvider의 구현을 만든 다음 클래스 패스에 META-INF/services/com.ocpsoft.pretty.faces.spi.ConfigurationProvider라는 파일을 추가하고 이러한 파일에 대한 this example을 볼 수있다 (구현 클래스의 전체 클래스 이름을 추가하고이 플러그인 메커니즘의 설명은 ServiceLoader의 JavaDoc을).

    +0

    나는 실제로 SPI 기술을 먼저 시도했다. 그러나 그것을 작동하게 만들 수는 없었다. 위의 코드에서 ** PrettyFacesConfigProvider ** 클래스는 실제로 매우 동일한 SPI 호환 구현입니다. 귀하의 의견 후 나는 다시 시도하고 그것을 효과. 작동하지 않는 이유는 spi config 파일을 잘못된 위치에 두었 기 때문입니다. ** META-INF/services **를 리소스 디렉토리에 만들었습니다. 파일을 거기에 넣고 빙고에 넣으십시오! – thorondor