2010-06-08 4 views
3

복합 컴포넌트의 인스턴스에 비공개 인 "컴포넌트 - 범위"콩 (so-to-say) "복합 컴포넌트 내부의 로컬 변수"를 어떻게 생성 할 수 있는지 궁금합니다. .JSF2 복합 컴포넌트에 컴포넌트 범위 bean을 가질 수 있습니까?

은 아래 자세한 내용입니다, 예를 들어 설명 :

는 "계산기"구성 요소가있는 가정 - 사용자가 수식을 입력 할 수 있습니다, 그 값을 평가 뭔가. 선택적으로, 연관된 기능을 플롯합니다.

나는이 복합 구성 요소를 만들 수 있습니다

  • 텍스트 수학 식에게 "평가"라고
  • 두 개의 버튼을 받아들이 상자, 그리고 "플롯"
  • 을 나타내는 또 다른 중첩 된 구성 요소 함수

이것은 분명히 독립적 인 기능의 조각입니다. 그래서 그것을 사용하고자하는 사람은 단지 < 수학 말할 수 : expressionEvaluator/>

그러나 분명히을, 자바 객체 필요가 구현 - 표현식을 평가 뭔가, 플롯 포인트 등을 계산 뭔가를 - 그리고 I 인스턴스가 인이 구성 요소의 bean 범위 일 수 있으며 구성 요소의 모든 인스턴스에서 공유되는 뷰 범위 또는 요청 범위가 아닌 Bean 일 수 있다고 가정하십시오.

어떻게 그러한 bean을 만드나요? 컴포지트 구성 요소에서도 가능합니까?

답변

0

"구성 요소 인스턴스 별"범위가 없습니다. 그러나 원하는 효과를 얻을 수는 있습니다.

평가 및 플로팅을 수행하려면 ViewScoped bean을 사용하십시오.이 함수는 "상태 비 저장"이므로 사용자의 입력에 의해 피드됩니다.

입력 내용은 사용자가 제공 한 bean에 의해 뒷받침됩니다. 텍스트 상자 또는 달력 위젯에는 사용자 제공 bean에 바인드 된 입력 상자가 필요합니다. 이것은 "stateless"viewscoped 빈이 작동하는 데이터를 보유합니다.

구성 요소에 포함 된 모든 것을 유지하고 싶다면 입력 ID로 키가 지정된 맵을 포함하는 ViewScoped 빈을 사용하여 입력을 되돌릴 수 있습니다. 그게 효과가 있는지 확실하지 않습니다.

0

또는 Java 기반 UIComponent를 사용자 정의 할 수도 있습니다. JSF 1.x에서는 JSF 2.0과 Facelets에서 말도 안되는 양의 "움직이는 부분"이 필요했지만 실제로 빌드하는 것은 그리 많지 않습니다.

일반적으로 사용자 정의 Java 기반 UIComponents를 작성하는 데 적당한 사람이어야합니다. 대부분의 경우 복합 요소가 더 쉽고 간단합니다. 그러나 Java 기반 UIComponent는 여전히 사용하고 있으며 실제 계산을 수행하는 것이 그러한 용도 일 수 있습니다.

+0

JSF 2.0에서 사용자 정의 컴포넌트를 빌드하는 방법에 대한 참조가 있습니까? –

+0

이것은 JSF 2.0에서 자바 기반의 간단한 시작 예제이다. http://jdevelopment.nl/simple-java-based-jsf-custom-component/ –

관련 문제