2010-02-13 5 views
16

Je construis un widget avec UiBinder, et je dois l'avoir inclus dans un <span /> mais UiBinder me donne seulement <div />. Par exemple. <g:HTMLPanel /> =><div />. HorizonPanel, FlowPanel, VerticalPanel ne donnent également que <div />.Essayer d'obtenir UIBinder pour me donner un span pas un div

Est-ce que quelqu'un connaît une solution?

+4

Vous avez lu le raisonnement pour l'utilisation divs par rapport aux autres balises dans les javadocs de HTMLPanel pour le 'HTMLPanel public (balise String, html String)' cteur: http://code.google.com /p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/user/client/ui/HTMLPanel.java#69. En bref: c'est pour s'il vous plaît IE:/ –

Répondre

24

Essayez ceci:

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' 
     xmlns:g='urn:import:com.google.gwt.user.client.ui'> 
    <g:HTMLPanel tag="span"> 
     <!-- your stuff --> 
    </g:HTMLPanel> 
</ui:UiBinder> 
+0

Génial. Merci Bob. – user198313

+1

Problème: vous ne pouvez pas modifier le contenu via un champ ui: avec cette technique. – qwertzguy

0

En ce qui concerne la réponse ci-dessus par Robert (désolé, je ne peux pas comprendre comment faire des commentaires que directement)

Cela ne fonctionnera pas hors de la boîte, que les widgets ne peuvent pas être placés à l'intérieur HTML brut (le compilateur vous donnera "error: widget trouvé dans le contexte html"). Mais il y a une solution simple:

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' 
      xmlns:g='urn:import:com.google.gwt.user.client.ui'> 
    <g:HTMLPanel> 
    <span> 
     <!-- Your content with widgets goes here --> 
    </span> 
    </g:HTMLPanel> 
</ui:UiBinder> 

Une autre chose utile de mentionner est InlineHTML et InlineLabel widgets capable de tenir arbitraire HTML ou le texte brut respectivement dans une < durée >

+0

J'ai essayé la solution de Bob et cela a bien fonctionné avec les widgets dans le HTMLPanel. –

+0

mon commentaire s'applique à une ancienne version de GWT - celle qui était disponible dans '10 – atamur

5

Vous pouvez continuer à utiliser un <div> mais juste ajouter display: inline à son CSS, ce qui le fera afficher comme s'il s'agissait d'un <span>. Edit: lieu fixe à la fin où j'ai dit 'div' mais signifiait 'span'.

+0

Solution brillante! – iTrout