tipos para paginas hojas etiquetas estilos estilo enlazar ejemplos descargar codigos css gwt resources uibinder

para - etiquetas css



GWT UiBinder no carga la hoja de estilo (2)

Quería hacer un widget de GWT usando UiBinder. Así que hice:

UserPanel.ui.xml como este:

<?xml version="1.0" encoding="UTF-8"?> <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.example.resources.UserPanelResources" /> <g:VerticalPanel styleNames=''{res.userpanel.main}''> ...some other widgets go here... </g:VerticalPanel> </ui:UiBinder>

UserPanel.css así:

.main { width: 1000px; background-color: #f9f9fa; padding: 15px 10px; font-family: "Georgia"; }

y UserPanelResources.java como:

public interface UserPanelResources extends ClientBundle { public interface UserPanelCss extends CssResource { String main(); } @Source("css/userpanel.css") UserPanelCss userpanel(); }

Todos los archivos y paquetes están en su lugar, ya que todo compila muy bien. ¡Pero cuando ejecuto el Modo de Desarrollo, los estilos no se aplican! Intenté muchos enfoques diferentes, pero todavía no funciona.

Lo que noté, es que en el HTML, VerticalPanel recibe el nombre de clase ofuscado por GWT, pero el CSS no se envía al navegador, de hecho, el GWT ni siquiera lo solicita.

¿Me estoy perdiendo de algo?


Ok, encontré la solución.

Resultó ser el UserPanelCss no inyectado.

La solución estaba en UserPanelResources, java:

public interface UserPanelResources extends ClientBundle { public final static UserPanelResources INSTANCE = GWT.create(UserPanelResources.class) public interface UserPanelCss extends CssResource { String main(); } @Source("css/userpanel.css") UserPanelCss userpanel(); }

Y en la clase UserPanel.java solo agrega:

static { UserPanelResources.INSTANCE.userpanel().ensureInjected(); }


Tenía el mismo problema para un recurso de CSS que solo estaba usando en mi archivo de UiBinder.

Agregué un truco al constructor de mi widget para arreglarlo. Aquí está el equivalente usando los nombres de clase anteriores:

@Inject UserPanel(UserPanelResources resources) { resources.userpanel().ensureInjected(); initWidget(BINDER.createAndBindUi(this)); ... }