2012-11-15 1 views
0

와 위젯의 선택적 매개 변수를 정의 다음과 같은 질문에 대한 답을 보여줍니다이 가능합니다 : 템플릿에 <g:HTMLPanel tag="span">를 선언하면UIbinder

Trying to get UIBinder to give me a span not a div

는 다음 HTMLPanel 마지막에 <span> 요소가됩니다 결과, 기본 <div> 대신.

public HTMLPanel(String tag, String html) 
아마이 방법에 의해 불려

,하지만 어떻게 :

HTMLPanel이 생성자가? 템플릿에는 태그 속성이없는 경우, 사용되는 생성자는 아마 하나입니다

public HTMLPanel(String html) 

나는 템플릿에 정의 된 매개 변수와 위젯을 만들 수 @UiConstructor와 생성자를 주석하는 것이 가능하다는 것을 이해하지만, 어떤 속성이 정의되었는지에 따라 생성자를 변경하는 것이 가능한가?

또한 String html은 자동으로 채워 집니까? 요소의 내용으로 html 속성에 대한 암묵적인 정의가 있습니까? 아니면 HTMLPanel 용 UIBinder의 비표준 동작입니까?

답변

1

HTMLPanel에는 ui.xml의 요소를 처리하는 전용 HTMLPanelParser이 있습니다.

요소 파서는 UiBinder의 내부 부품이므로 사용자는 add your own이 될 수 없습니다.

는 단일 @UiConstructor 생성자를 선언해야하고 나머지는 CompositeinitWidget 전화를 잊은 경우 부착시에 발생하는 방법을 몇 가지 최종 검증 가능한 유사한 onAttach (에서 수행로, 세터에 의해 처리했으며, WidgetsetElement에 대해서도 유사하게).

복잡한 경우 및 생성자 인수 사용을 강요하려면 특별한 작업을 수행하지 말고 위젯 사용자가 @UiFactory 또는 @UiField(provided = true)을 사용하도록하십시오. 예를 들어 SuggestBox, ValueListBox 또는 CellList의 경우입니다.

내 개인적인 취향은 마지막 접근 방식입니다.