JSF 2.2로 스프링 부트를 사용한다. 내 문제는 javax.annotation.ManagedBean
에서 @ManagedBean
을 만들 수 있으며 앱을 실행할 때 내 index.xhtml에서 작동하지만, 사용하고자하는 경우 javax.faces.bean.ManagedBean
이 값을 표시하지 않는다는 것입니다. 이 둘의 차이점은 무엇입니까? javax.faces.bean.ManagedBean
을 사용할 수없는 이유는 무엇입니까? (web.xml 파일이 없습니다. 모두 클래스로 구성되어 있습니다.)스프링 부트로 JSF 관리 빈 어노테이션 통합하기
1
A
답변
4
javax.annotation.*
주석은 고전 JSF 주석에서 CDI 방식으로 이동하기위한 것입니다. Spring Framework는 CDI 어노테이션을 읽을 수있는 능력을 가지고 있기 때문에이 어노테이션이 "작동"하는 이유가 될 수 있습니다. 그러나 CDI의 추세는 전체적으로 @Named
을 사용하는 것입니다.
스프링 부트 응용 프로그램에서는 JSF가 아닌 주석을 스캔하는 스프링을 사용합니다. 따라서 응용 프로그램이 @ManagedBean
으로 작동한다고 생각할 수도 있습니다. @*Scoped
주석은 쓸모가 없습니다. 생성 된 모든 bean이 Singletons가되어 Spring의 기본 범위가됩니다.
결국 내가 선택한 것은 바닐라 스프링 주석과 범위를 사용하는 것이 었습니다. Spring은 JSF 뷰 범위가 없으므로, custom scope을 에뮬레이션한다.
MyBean.java :
@Component
@Scope("view")
public class MyBean {
//Here it goes your logic
}
ViewScope.java : 잊지 마세요, 마지막으로
@Bean
public static CustomScopeConfigurer viewScope() {
CustomScopeConfigurer configurer = new CustomScopeConfigurer();
configurer.setScopes(
new ImmutableMap.Builder<String, Object>().put("view", new ViewScope()).build());
return configurer;
}
:
public class ViewScope implements Scope {
@Override
public Object get(String name, ObjectFactory<?> objectFactory) {
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 String getConversationId() {
return null;
}
@Override
public void registerDestructionCallback(String arg0, Runnable arg1) {
}
@Override
public Object remove(String name) {
return FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove(name);
}
@Override
public Object resolveContextualObject(String arg0) {
return null;
}
}
CustomScopeConfigurer
과 뷰 범위를 등록EL 표현식을 통해 봄 콩 사용할 수 있도록 당신의 얼굴-Config.xml의 봄 EL 해결 프로그램을 추가 :
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
항목 :
관련 문제
- 1. JSF 관리 빈 (Servlet)
- 2. 변수의 JSF 관리 빈?
- 3. JSF 관리 빈 질문
- 4. 커스텀 어노테이션 JSF
- 5. 스프링 세션 빈 관리
- 6. 스프링 부트로 보안 구성
- 7. 스프링 부트로 Memcached
- 8. JSF 컨트롤러에서 스프링 빈 autowiring
- 9. 관리 빈 이벤트에서 리디렉션 JSF
- 10. JSF 관리 빈 및 Taglib
- 11. JSF 2.0에서 어노테이션 사용?
- 12. JSF 관리 빈을 스프링 빈으로 옮기기
- 13. 느린 ehcache 스프링 어노테이션
- 14. 스프링 부트로 오디오 파일 제공
- 15. 리눅스에서 스프링 부트로 바람둥이 시작
- 16. BeanfactoryAware를 사용하여 어노테이션 기반 빈 가져 오기
- 17. 스프링 빈으로 JSF 빈 삽입하기 - 불가능합니까?
- 18. JSF 세션 범위 관리 빈 목록
- 19. JSF 관리 빈 및 디자인 패턴
- 20. 방법에서의 BeanFactory를 @Autowire하는 관리 빈 (JSF)
- 21. jsf 관리 빈 메서드의 문자열을 html로
- 22. jsf 관리 빈 오류에서 EJB 삽입
- 23. 관리 빈 간의 통신에 관한 JSF 질문
- 24. 어노테이션 기반 설정을 사용하여 지연 초기화 된 스프링 빈 생성하기
- 25. 관리 빈에서 스프링 빈을 인스턴스화 할 수 없습니다. 스프링 + JSF
- 26. 스프링 2.5.6과 Struts 1.3.8을 통합하기
- 27. JOSSO를 스프링 ws 클라이언트와 통합하기
- 28. 성능에 대한 우려 관리되는 빈 내부의 JSF 관리 빈 주입
- 29. JSF 2 애플리케이션에서 스프링 사용자 정의 범위 빈 삽입하기
- 30. 스프링 빈 생성 및 사전 관리