soz*_*hen 1 css gwt path clientbundle
我想将所有资源放入ClientBundle中以便于管理.所以我首先开始将单个css文件(也是目录下的文件/war)放入ClinetBundle.但是这个样式无法在我的输出中呈现,但是如果我只是将css文件放在下面/war而没有使用css ClientBundle,那么程序运行得很好.
下面是我的简单测试用例(使用ClientBundle) - 我将css文件放在client包中,并删除目录下的css文件/war:
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.resources.client.CssResource.NotStrict;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;
public class Test implements EntryPoint {
private static final int REPORT_TITLE_HEIGHT = 50;
public static final MyResources INSTANCE = GWT.create(MyResources.class);
public interface MyResources extends ClientBundle {
@NotStrict
@Source("Test.css")
CssResource css();
}
public void onModuleLoad() {
INSTANCE.css().ensureInjected();
Window.enableScrolling(false);
Window.setMargin("0px");
VLayout vl = new VLayout();
vl.setWidth100();
vl.setHeight100();
HLayout reportTitleBar = new HLayout();
reportTitleBar.setHeight(REPORT_TITLE_HEIGHT);
reportTitleBar.setStyleName("report-title-bar");
vl.setMembers(reportTitleBar);
RootPanel.get().add(vl);
}
}
Run Code Online (Sandbox Code Playgroud)
样式无法呈现.
另一个简单的例子 - 没有使用css ClientBundle并将css文件放回到文件/war夹中.
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;
public class Test implements EntryPoint {
private static final int REPORT_TITLE_HEIGHT = 50;
public void onModuleLoad() {
Window.enableScrolling(false);
Window.setMargin("0px");
VLayout vl = new VLayout();
vl.setWidth100();
vl.setHeight100();
HLayout reportTitleBar = new HLayout();
reportTitleBar.setHeight(REPORT_TITLE_HEIGHT);
reportTitleBar.setStyleName("report-title-bar");
vl.setMembers(reportTitleBar);
RootPanel.get().add(vl);
}
}
Run Code Online (Sandbox Code Playgroud)
样式可以正确呈现.
我的Test.css代码:
.report-title-bar {
/* IE10 Consumer Preview */
background-image: -ms-linear-gradient(top left, #FFFFFF 0%, #00A3EF 100%);
/* Mozilla Firefox */
background-image: -moz-linear-gradient(top left, #FFFFFF 0%, #00A3EF 100%);
/* Opera */
background-image: -o-linear-gradient(top left, #FFFFFF 0%, #00A3EF 100%);
/* Webkit (Safari/Chrome 10) */
background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0, #FFFFFF), color-stop(1, #00A3EF));
/* Webkit (Chrome 11+) */
background-image: -webkit-linear-gradient(top left, #FFFFFF 0%, #00A3EF 100%);
}
Run Code Online (Sandbox Code Playgroud)
这里有什么问题,有人请我解释一下.不胜感激!
如果你把你的css文件放到clientbundle中,你的css文件必须由GWT编译器CSS解析器解析,它目前基于一个有点被黑客入侵的旧版本.(虽然将来会改变)
要使解析器工作,您需要像这样转义背景值:
background-image: literal('-webkit-linear-gradient(top left, #FFFFFF 0%, #00A3EF 100%)');
Run Code Online (Sandbox Code Playgroud)
还有一些其他怪癖也需要逃避.查看文档并搜索转义:https://developers.google.com/web-toolkit/doc/latest/DevGuideClientBundle