2012-03-01 6 views
1

iceface 1.7.2에있는 프로젝트를 iceface 2.0.0으로 마이그레이션하려고합니다. 하지만 바인딩에 문제가 있습니다. 전체 프로젝트는 모든 UI 구성 요소마다 바인딩을 사용하고 이전 버전에서는 요청 범위를 사용하기 때문에. 만약 내가 그것을 옮기고 싶다면 범위 bean을보기 위해 요청 범위 bean을 변환 할 필요가있다. 그렇게하면 바인딩이 작동하지 않아 원하지 않는 결과가 발생합니다.ICEfaces 2.0.0 + Scope + Binding보기

그래서 바인딩이나 다른 방법으로 프로젝트를 마이그레이션하지 않고 icefaces 1.7.2 프로젝트를 iceface 2.0.0으로 마이그레이션하는 솔루션을 제안 해주십시오.

또한 창 또는 세션 범위는 더 많은 사용자가 동시에 웹 페이지에 액세스하는 동안 각 사용자에 대해 더 많은 메모리 공간을 사용하므로 유용하지 않습니다.

+0

정확히 바인딩해야하는 이유는 무엇입니까? JSF 2.x에는 컴포넌트를 빈에 바인딩 할 필요없이 몇 가지 새로운 방법이있다. 관련 : 태그 처리기에서 ['@ ViewScoped '가 실패했습니다.] (http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html#ViewScopedFailsInTagHandlers). – BalusC

+0

이전 버전의 iceface에서 사용 된 모든 구성 요소는 바인딩 속성을 사용하여 해당 구성 요소와 관련된 모든 것을 수행합니다. 예. 바인딩없이 icefaces2.0 및 jsf2.0 웹 프로젝트를 쉽게 만들 수 있습니다. 그러나 icefaces1.7.2 프로젝트를 iceface 2.0.0 프로젝트로 마이그레이션하는 상황에 처해 있습니다. jsf2.0 및 icefaces 2.0.0에서 전체 프로젝트를 만들 수 있습니다. 그러나 마이그레이션보다 시간이 오래 걸립니다. – tgsankarbabu

답변

2

JSF 2.0 및 2.1에서 타이밍 문제로 인해 구성 요소 바인딩을 뷰 범위와 함께 사용할 수 없습니다.

바인딩은 구성 요소 트리가 빌드 될 때 해결되지만 빌드 이후에 발생하는 뷰 상태가 적용될 때까지 뷰 범위가 활성화되지 않습니다.

이것은 JSF 2.2에서 수정되었지만 아직 릴리스되지 않았습니다. 모험을 느끼는 경우 야간에 지어 볼 수도 있습니다.

+0

내가 U 포인트를 얻을 수 없다 .. 나는 jsf2.2가 출시 될 때까지 기다릴 필요가 있니? 마이그레이션을 수행 할 다른 방법이 있습니까 ?? – tgsankarbabu

+0

id를 사용하여 구성 요소를 찾는 것과 같은 바인딩 속성을 사용하지 않고 뷰 범위 bean을 만드는 다른 모든 방법은 무엇입니까 (findComponent (FacesContext.getCurrentInstance(). getViewRoot(), "componentID");) ?? – tgsankarbabu

+0

뷰 범위를 사용하고 구성 요소에 액세스하려면 Id로 찾거나 별도의 요청 범위 Bean에 구성 요소를 바인드하십시오. EL을 프로그래밍 방식으로 해석하거나 요청 속성을 통해 뷰의 범위에서 해당 Bean을 가져옵니다. –

0

또는 jsf 2.2가 출시 될 때까지 SessionBean ...을 사용할 수 있습니다.