2016-06-27 2 views
1

나는 Wicket 7.3 및 JQuery 2.1.4에 다음과 같은 문제가있다.Wicket Ajax TabbedPanel에서 언제 getString()을 사용할 수 있습니까?

동적 탭 패널 (탭 추가 및 제거)에서는 탭 제목을 현지화하고 툴팁을 추가하려고한다. 내 코드 로그 파일에 경고의

JQueryGenericPanel() { 
.... 
    populateItem(ListItem<ITab> item) { 
    getString(); 

결과 : 아직 페이지에 추가되지 않은 구성 요소에 대한 지역화 된 문자열을 검색하기 위해 시도

. 이로 인해 때때로 지역화 된 자원이 유효하지 않거나 전혀 반환되지 않을 수 있습니다. 확인 당신이 있기 때문에,

onInitialize() 

이 작동하지 않는 의 방법에서 (탭에) 패널의에는 getString()를 사용하여 구성 요소의 생성자

내부 구성 요소 #의에는 getString()를 호출하고 있지 않은지 확인 너무 늦었 어. 레이블은 이미 "게으른"것으로 설정되었습니다.

내가 사용할 수있는 "populateItem()"과 유사한 다른 방법이 있습니까?

** 부록은 ** 탭이 패널에 대한 코드는 다음과 같습니다

public class MyTabbedPanel extends JQueryGenericPanel<List<ITab>> implements ITabsListener { 
    ... 
    @Override 
    protected void onInitialize() { 
    super.onInitialize(); 

    this.add(new ListView<ITab>("tabs", this.getModel()) { 
     ... 
     @Override 
     protected void populateItem(ListItem<ITab> item) { 
     Label link = new Label("widgetId", new PropertyModel<String>(somePanel, "getTitle()")); 
패널의 코드는

: 그래서 PropertyModel가 된 getTitle '로 제목을 가져

private String title = "default"; 
public String getTitle() { return title; } 
@Override 
public void onInitialize() { 
    title = getString("someKey"); 
} 

() '. 불행히도 이것은 onInitialize()가 호출되기 전에 발생합니다. 따라서 탭 제목은 "someKey"에 대한 지역화 된 텍스트 대신 "기본값"을 표시합니다. 대신

new Label(itemId, getString("key")) 

+0

'새로운 PropertyModel 을 (somePanel , "getTitle()"))'이 이상하게 보입니다. '새로운 PropertyModel (somePanel, "title"))'을 대신 사용하십시오. –

답변

0

... 사용 :

new Label(itemId, new ResourceModel("key")); 

... 또는 문자열 공상 뭔가 일 경우 :

new Label(itemId, new AbstractReadOnlyModel<String>() { 
    public String getObject() { 
    return ... + getString("key") + ...; 
    } 
}); 
+0

나는 이미하고있다 –

+0

글쎄, 우리는 더 많은 코드를 보여줘야한다. – svenmeier

+0

'Label link = new Label ("widgetId", 새 PropertyModel (panelObject, "getTitle()"))' 그러나 문제는 여전히 남아 있습니다. 'getString()'을 사용하여 제목을 설정하면 'onInitialize()'에서만 사용할 수 있지만 PropertyModel은 이전 제목을 이미 액세스했습니다. 불행히도 당신의 대답은 문제를 해결하지 못합니다. –