2016-07-08 2 views
0

JSF에 익숙하지 않아서 제 질문이 사소한 경우 미안합니다.객체 유형에 따라 동적으로 HTML을 생성합니다.

세 가지 유형의 항목 목록을 제시해야합니다. 서로 다른 메타 데이터 (속성)를 갖고 다른 시각적 표현이 필요한 서적, 소프트웨어 및 코스를 가정 해 보겠습니다.

각 항목은 추상 항목 클래스에서 상속되므로 항목 목록이 있습니다.

각 하위 클래스가 자신의 "렌더러"를 구현할 수 있도록 Item 클래스에 추상 메서드 getHtml()을 선언 할 것을 생각했습니다. 그런 다음 XHTML 페이지에서 EL을 사용하여 getHtml() 메서드를 호출합니다. 질문 : 올바른 방법입니까?

  1. 모델보기
  2. (유지 관리가 매우 어렵) 자바 코드에 의해 생성 된 HTML과 혼합 : 나는 몇 가지 단점을 참조하십시오.

모든 의견을 환영합니다.

이 합성 발표가 충분히 명확한 지 모르겠다. 명확한 내용을 문의하십시오.

미리 감사드립니다.

+0

고맙습니다. BalusC! 당신은 나를 오른쪽 레일로 인도했습니다. 나는 내가 필요한 것을 알고 있었지만 무엇을 구해야할지 몰랐습니다. 네가 지적한 남편이 내가 찾고 있던 애들이야. 다시 한번 감사드립니다. – baronKarza

+0

당신을 진심으로 환영합니다. – BalusC

답변

0
  1. 드롭 다운 목록과 같은 세 가지 중 하나를 선택하기위한 페이지를 만듭니다.
  2. 보기의 경우 book.xhtml, boftware.xhtml 및 courses.xhtml의 세 파일을 만듭니다.
  3. 그런 다음 하나의 관리 빈을 작성하십시오. 아래의 선택은 상기 # 1의 드롭 다운 목록에 기초한다 :

    @ManagedBean 
    public class BkSoCoSelector { 
    private String myChoice = null; 
    //add setter and getter. 
    //add no-arg constructor. 
    } 
    
  4. .NOTE은 실시 예를 참조] 동적 선택을 상기 클래스의 메소드를 만든다. 메인 페이지, # 1에

    public String pageSelector(){ //if null, return nothing. //if this.myChoice == book, return book; //no file extension needed. //do the same for the other files. }

  5. , 다음

    <h:commandButton value = "Submit" action = "#{bkSoCoSelector.pageSelector()}"/>

가 요약에 추가 :

  • 는 사용자에게 선택권을 부여
  • 설정 티 그는 인스턴스 변수에 값을 선택했습니다. // 장면 뒤에 있습니다.
  • 지금 설정된 인스턴스 변수를 가져옵니다.
  • 인스턴스 변수의 값을 기본으로 표시 할 페이지를 선택하십시오.
+0

Xenwar, 빠른 답변에 감사드립니다. 항목 유형을 선택하는 것이 타당하지 않기 때문에 문제에 적용 할 수 없습니다.이 목록은 Elasticsearch에서 가져온 결과 집합이므로 모든 항목을 함께 제시해야합니다. BalusC 주석은 필요한 모든 정보를 결과 목록에 표시 할 수있는 XHTML 조각을 dinamically로드하는 올바른 방법을 제시했습니다. 그러나 귀하의 제안에 다시 한 번 감사드립니다. – baronKarza

관련 문제