2010-11-15 23 views
3

Je voudrais partager un CSS sur plusieurs widgets en utilisant.ui: avec, le style ne s'affiche pas

Je peux voir que le nom de classe css est obfusqué mais la définition de classe n'apparaît pas lorsque j'inspecte l'élément dans firefox/chrome. Voici mes codes. Quelqu'un peut-il suggérer ce qui me manque? Merci.

Style.css

.nameSpan { color: #3E6D8E; background-color: #E0EAF1;} 

Resources.java

public interface Resources extends ClientBundle { 
    @Source("Style.css") 
    Style style(); 
    public interface Style extends CssResource { 
    String nameSpan(); 
    } 
} 

uibinder.ui.xml

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' 
    xmlns:g='urn:import:com.google.gwt.user.client.ui'> 
    <ui:with field='res' type='com.my.app.widgets.logoname.Resources'/> 
    <g:HTMLPanel> 
     <div> 
     Well hello there 
     <g:InlineLabel ui:field='nameSpan' styleName="res.style.nameSpan">kevin</g:InlineLabel> 
     </div> 
    </g:HTMLPanel> 
</ui:UiBinder> 

uibinder.class

public class uibinder extends Composite { 
     private static uibinderUiBinder uiBinder =  GWT.create(uibinderUiBinder.class); 
     interface uibinderUiBinder extends UiBinder<Widget, uibinder> {} 
     @UiField(provided = true) final Resources res; // the style doesn't show no matter provided=true is declared or not. 
     public uibinder(Resources res) { 
       res = GWT.create(Resources.class); 
       initWidget(uiBinder.createAndBindUi(this)); 
     } 
+1

Et ne pas oublier d'appeler: 'res.style() ensureInjected();' –

+0

Oui, il est la solution !!!. Merci. Vous devriez le mettre comme la réponse et je l'accepterai! –

Répondre

7

Vous devez utiliser res.style().ensureInjected()

+0

Hilbrand a déjà mentionné cela. Mais oui, c'est la réponse. –

+1

Vous êtes un épargnant de vie! –

+0

Totalement .. merci! – HaveAGuess

2

Vous devez attribuer le style (attribut styleName) quelque part. Par exemple:

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui'> 
    <ui:with field='res' type='com.my.app.widgets.logoname.Resources'/> 
    <g:HTMLPanel> 
     <div> 
      Well hello there 
      <g:InlineLabel ui:field='nameSpan' styleName="{res.nameSpan}">kevin</g:InlineLabel> 
     </div> 
    </g:HTMLPanel> 
</ui:UiBinder> 

L'attribut ui:field vous avez déclaré ne définit pas le style css. Il définit l'attribut à renseigner dans votre classe uibinder. Voir le GWT doc pour quelques conseils.

+0

En fait, j'ai ajouté le styleName mais le style n'est pas visible. J'ai édité la question pour refléter les changements. –

+0

Dans ce cas, vous pouvez vérifier que les accolades dans l'extrait de code de z00bs existent également dans votre code. – Wesley