2009-10-16 1 views
2

TabbedPanel에 대한 위젯 예제 페이지 (link)는 각 탭 (TabPanel1, TabPanel2 및 TabPanel3)에 대해 별도의 고유 한 클래스를 사용합니다. 동일한 클래스의 세 인스턴스를 사용하지 않는 이유가 있습니까? 그렇다면 무엇입니까? 나는 여전히 Wicket을 처음 접했지만 그 수업은 나처럼 똑같아 보입니다.Wicket의 각 탭에 고유 한 클래스를 사용하는 목적은 무엇입니까?

편집 : tabPanel 클래스의 세 객체를 사용하여 간단한 예제를 실행했습니다. 각각은 다른 레이블을 사용하도록 설정되었으며 제대로 표시되었습니다.

EDIT AGAIN : 실험을 더하고 나중에 게시 된 답변을 읽은 후, 첫 번째 예가 너무 단순하다는 것을 알았습니다. 하나의 클래스를 사용하면 탭 제목은 다를 수 있지만 논리는 여전히 동일합니다. 언급 된 사람이 "Swiss Army Knife"클래스가되어서는 안되며, 이는 잘못된 디자인입니다. 그리고 그것은 여전히 ​​마크 업 파일을 다루지 않을 것입니다.

답변

2

Wicket은 재사용 가능한 구성 요소의 개발을 장려하기 위해 고안되었습니다. 세 가지 다른 클래스를 완전히 다른 동작 및 내용으로 응용 프로그램의 여러 페이지에서 사용하려는 다른 구성 요소로 간주하십시오. 연락처 정보는 Tab1,지도는 Tab2, 그림은 Tab3이라고 말하십시오. 다른 목적을 모두 다룰 수있는 Swiss-Army-Knife-Panel을 만들고 싶지 않을 것입니다. 따라서이 예제에서는 다른 패널 클래스가 사용됩니다.

틀림없이이 예에서는 최상의 값을 사용하지 않습니다. 그러나 개찰구의 일반적인 원리로 시작하는 경우 (개찰구에서 이러한 특별한 구성 요소가 아닌 working with models의 작동 방식을 특별히주의하십시오) 더 나은 아이디어 일 수 있습니다. 확장 패키지.

1

같은 클래스의 세 인스턴스를 사용한다면 각 탭마다 동일한 컨텐츠로 끝날 것입니다 ...별로 도움이되지 않습니까?

+0

다른 콘텐츠를 설정할 수없는 이유가 없습니다. – Pops

+0

테스트 결과처럼 몇 번이라도 같은 클래스를 사용할 수는 있지만 아주 전형적인 유스 케이스라고는 확신하지 못합니다. 더 많은 구성 요소와 어쩌면 몇 가지 폼 요소를 추가하면 탭이 달라 지길 원한다면 같은 학급은 유용하지 않습니다 .. – Tim

+0

좋아, 분명히 내가 처음 대답을 읽으면서 뭔가를 놓쳤다. 나는 당신이 서로 다른 3 개의 String을 사용할 수 없다고 주장하고 있다고 생각했는데, 왜냐하면 그것들은 모두 같았 기 때문입니다. 소식을 수정하면 -1이 취소됩니다. – Pops

0

당신이 보여 주었 듯이, 패널의 디스플레이가 모델에 의해 제어되는 곳에서는 가능하고 잘 작동 할 것입니다.

당신은 동일한 "AddressWithMapPanel"로, 각각 다른 모델 전달의 3 개 인스턴스를 만들 수 있습니다 .. 당신은 위치에 내장 된 구글 맵 이미지로 표시하고 주소 구성 요소를 가지고 말할 수 있습니다 각 테이블은 "집", "직장", "기타"주소입니다. 그런 다음 탭 로직을 사용하여 다른 주소를 보는 것과 동일한 UI 변경을 중앙 위치에서 유지하면서 다른 컨텐츠를 가져 오는 것을 전환 할 수 있습니다.