나는 대학을위한 개찰판 응용 프로그램을 개발 중이며 다소 (다소 까다로운) 문제에 부딪쳤다.개찰구 상속 문제
일부 컨텍스트를 넣으려면 : HTML5 플레이어를 사용하는 응용 프로그램을 만들고 있습니다.이 솔루션은 플레이어를 포함하는 페이지의 생성자에게 쿼리를 만들고 해당 미디어의 소스를 검색하는 것이 었습니다 .
이제 내 문제는 템플릿을 사용하고 있으므로 머리글과 바닥 글을 자동으로 넣는 페이지를 만들었지 만 내 플레이어는 작동하려면 PageParameters
이 필요하고 확장 할 수 있도록하려고합니다. BasePage
에서부터 시작하지만, 기본 페이지의 생성자에는 일부 매개 변수가 있으므로 현재있는 페이지를 기반으로 헤더의 텍스트를 동적으로 변경할 수 있습니다.
protected BasePage(String tabHeader, String header) {
add(new Label("tab_title", tabHeader));
add(new Header("header", header));
add(new UserPanel("user_panel"));
add(new Footer("footer"));
}
그리고 내 선수 페이지 : 이것은 super()
까다로운 방법 퍼팅 수
public PlayerPage(PageParameters params) {
String name = params.get("name").toString();
MediaItem item = getItem(name.trim());
add(new Label("tab_title", "MaeGûl - " + name)); //trying to get rid of this
add(new Header("header", item.getName())); //and this
add(new UserPanel("user_panel")); //and this
if (item.getType().equals(ItemTypes.MUSIC)) {
add(new AudioPlayer("player", item.getMediaSources()));
} else if (item.getType().equals(ItemTypes.SERIES)
|| item.getType().equals(ItemTypes.MOVIES))
add(new VideoPlayer("player", item.getMediaSources()));
add(new Footer("footer")); //and this
}
을 당신이 볼 수있는 바와 같이, 내 PlayerPage
생성자가 업데이트 할 "이름"매개 변수를 필요에 super(tabHeader, header)
를 넣어 경우 BasePage
의 헤더와 tabHeader, 그래서 나는 바보짓을 했어.
어떤 해결책이 있겠 니?
protected BasePage(IModel<String> tabHeader, IModel<String> header)
을 전용 모델, 예를 들어,에 값 검색을 위임 :
+1. 이것은 좋은 조언입니다. 생성자 args를 삭제하고 재정의 할 수있는 보호 IModel getTabHeaderModel()에서 가져올 수도 있습니다. –
덕분에 나는 이것을 만들려고 노력할 것이고, 그것이 작동한다면 나는 같은 문제를 가진 누군가를 위해 해결책을 게시 할 것이다. –
대단히 감사합니다. 이것은 완벽하게 작동했습니다. –