2010-02-13 10 views
16

Sto costruendo un widget con UiBinder, e ho bisogno di averlo racchiuso in un <span /> ma UiBinder mi dà solo <div />. Per esempio. <g:HTMLPanel /> =><div />. HorizonPanel, FlowPanel, VerticalPanel emettono anche solo <div />.Cercando di far sì che UIBinder mi dia una span non div.

Qualcuno conosce una soluzione?

+4

Hai letto la motivazione per l'utilizzo di div oltre altri tag in javadocs di HTMLPanel per la HTMLPanel 'pubblico (tag stringa, stringa HTML)' ctor: http://code.google.com /p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/user/client/ui/HTMLPanel.java#69. In breve: è per favore IE:/ –

risposta

24

Prova questo:

<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

Fantastico. Grazie Bob. – user198313

+1

Il problema è che non è possibile modificare il contenuto tramite un campo ui: con questa tecnica. – qwertzguy

0

Per quanto riguarda la risposta di cui sopra di Robert (mi dispiace non riesco a capire come a commentare che direttamente)

Questo non funziona out of the box, come i widget non possono essere inseriti all'interno di codice HTML semplice (il compilatore ti darà "error: found widget in html context"). Ma c'è una soluzione semplice:

<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> 

Un'altra cosa utile da ricordare è InlineHTML e InlineLabel i widget in grado di contenere HTML arbitrario o solo testo, rispettivamente, in un arco < >

+0

Ho provato la soluzione di Bob e ha funzionato bene con i widget in HTMLPanel. –

+0

il mio commento si applica a una versione GWT precedente, quella disponibile in '10 – atamur

5

È possibile continuare a utilizzare un <div>, ma solo aggiungi display: inline al suo CSS, che lo visualizzerà come se fosse un <span>.

Modifica: posto fisso alla fine dove ho detto "div" ma che significava "span".

+0

Soluzione brillante! – iTrout

Problemi correlati