2013-10-15 4 views
1

Я недавно прыгнул в GWT и был доволен этим.@UiChild Дополнительные "addChildObject" Необходимы теги XML?

@UiChild хорош, потому что он позволяет нам добавлять дочерние элементы программно в дополнение к их представлению в UIBinder ui.xml.

Однако, я нашел что-то, что кажется действительно раздутым и нечетным.

Итак, когда я впервые столкнулся с @UiChild, я подумал, что это сработает.

<g:FlowPanel>   
     <c:CustomWidget customWidgetParameter="I am a 
parameter"ui:field="customFieldMappingName"/>         
</g:FlowPanel> 

@UiChild(tagname ="CustomWidget") 
    public void addCustomWidget(CustomWidget cw) 

Nice and clean. Я думал, что GWT будет искать теги CustomWidget. Однако после исследования я обнаружил, что должен был сделать что-то подобное.

<g:FlowPanel> 
    <c:addCustomWidget> 
     <c:CustomWidget customWidgetParameter="I am a parameter" 
      ui:field="customFieldMappingName"/>   
    </c:addCustomWidget> 
</g:FlowPanel> 

@UiChild(tagname ="addCustomWidget") 
    public void addCustomWidget(CustomWidget cw) 

Я делаю это неправильно? Или есть какая-то причина/крошечные подробности, которые мне не хватает, почему это так реализовано?

ответ

2

Не уверен, что это причина, но вы можете иметь несколько определений @UiChild. Возможно GWT не использует информацию о типе, но только тэг, чтобы проверить, какие функции для вызова:

<gui:MyCustomContainer> 
    <gui:myHeader> 
     <g:SomeWidget> 
    </gui:myHeader> 
    <gui:myContent> 
     <g:SomeWidget> 
    </gui:myContent> 
</gui:MyCustomContainer> 

И в вашем MyCustoContainer классе:

@UiChild(tagname="myHeader") 
public void addHeader(Widget widget); 

@UiChild(tagname="myContent") 
public void addContent(Widget widget); 
+0

Спасибо за ваши мысли! Да, это определенно веская причина. Хотелось бы, чтобы я мог каким-то образом включить атрибут в аннотации, которая могла бы контролировать, является ли ваш uichild только элементом. Может быть, это хорошая идея для меня попробовать и добавить такую ​​вещь, поскольку GWT является открытым исходным кодом! – Zerkz

Смежные вопросы