2017-01-28 12 views
0

Я использую JSF 2.2.14 WITN springboot 1.4.4 и я определил пользовательский вид сферу следующим образом:CDI @ViewScoped функциональность фасоли недоступна

public class FacesViewScope implements Scope { 

    public static final String NAME = "view"; 

    @Override 
    public Object get(String name, ObjectFactory<?> objectFactory) { 
     FacesContext facesContext = FacesContext.getCurrentInstance(); 
     if (facesContext == null) { 
      throw new IllegalStateException("FacesContext.getCurrentInstance() returned null"); 
     } 

     Map<String, Object> viewMap = FacesContext.getCurrentInstance().getViewRoot().getViewMap(); 

     if (viewMap.containsKey(name)) { 
      return viewMap.get(name); 
     } else { 
      Object object = objectFactory.getObject(); 
      viewMap.put(name, object); 

      return object; 
     } 
    } 

    @Override 
    public Object remove(String name) { 
     return FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove(name); 
    } 

    @Override 
    public String getConversationId() { 
     return null; 
    } 

    @Override 
    public void registerDestructionCallback(String name, Runnable callback) { 
     // Not supported by JSF for view scope 
    } 

    @Override 
    public Object resolveContextualObject(String key) { 
     return null; 
    } 
} 

и зарегистрировал в springboot основной класс следующим образом:

@Bean 
     public static CustomScopeConfigurer customScopeConfigurer() { 
      CustomScopeConfigurer configurer = new CustomScopeConfigurer(); 
      configurer.setScopes(Collections.<String, Object>singletonMap(
        FacesViewScope.NAME, new FacesViewScope())); 
      return configurer; 
     } 

при управлении с моей точки зрения области действия боб с пружиной следующим образом:

@Component("testBean") 
@Scope("view") 

страница работает нормально, но я получаю предупреждение:

c.s.f.application.view.ViewScopeManager : CDI @ViewScoped bean functionality unavailable 

я получаю это предупреждение только первый раз, когда я получить доступ к странице, поэтому я опасаюсь, если это предупреждение означает, что я делаю что-то неправильно или может вызвать проблемы в будущем, пожалуйста, сообщите.

ответ

1

Вы просто добавить этот depency на pom.xml Вашего Maven проекта:

<dependency> 
    <groupId>javax.enterprise</groupId> 
    <artifactId>cdi-api</artifactId> 
    <version>1.2</version> 
</dependency> 

 Смежные вопросы

  • Нет связанных вопросов^_^