Использовать пользовательские CSS с GWT

Как мне настроить gwt, чтобы использовать мой собственный CSS для макияжа? Эти ссылки мне совсем не помогли: https://developers.google.com/web-toolkit/doc/latest/DevGuideUiCss?hl=cs http://code.google.com/p/google-web-toolkit-doc-1-5/wiki/GettingStartedStyle

  • Проблема в том, что я не могу заставить gwt обнаружить css-файлы, которые я объявляю в своем файле lorum.gwt.xml, когда я запускаю режим отладки, jetty выдает следующую ошибку при выводе журнала при запуске:

:

 00:00:00.811  [WARN] 404 - GET /lorum/stylesheet.css (127.0.0.1) 1418 bytes
          00:00:00.811  [INFO] Request headers
            00:00:00.811  [INFO] Host: 127.0.0.1:8888
            00:00:00.811  [INFO] Connection: keep-alive
            00:00:00.811  [INFO] User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/11.10 Chromium/18.0.1025.168 Chrome/18.0.1025.168 Safari/535.19
            00:00:00.811  [INFO] Accept: text/css,*/*;q=0.1
            00:00:00.811  [INFO] Referer: http://127.0.0.1:8888/Home.html?gwt.codesvr=127.0.0.1:9997
            00:00:00.812  [INFO] Accept-Encoding: gzip,deflate,sdch
            00:00:00.812  [INFO] Accept-Language: en-US,en;q=0.8
            00:00:00.812  [INFO] Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
            00:00:00.812  [INFO] Cookie: JSESSIONID=ywoku1zfjs0b
          00:00:00.812  [INFO] Response headers
            00:00:00.812  [INFO] Content-Type: text/html; charset=iso-8859-1
            00:00:00.812  

И это не загружает мой CSS.

lorum.gwt.xml источник:

l version="1.0" encoding="UTF-8"?>
<module rename-to='lorum'>
    <!-- Inherit the core Web Toolkit stuff.                        -->
    <inherits name='com.google.gwt.user.User'/>
    <inherits name='com.google.gwt.user.theme.chrome.Chrome'/>
    <inherits name="com.google.gwt.resources.Resources" />
    <inherits name="com.company.lorum.gwt.client.stylesheet.css"/>
    <entry-point class='com.company.lorum.gwt.client.LoadModuleLorum'/>

    <stylesheet src='stylesheet.css' />

    <servlet path="/AuthenticationImpl" class="com.company.lorum.gwt.server.implementations.AuthenticationServiceImpl" />
    <servlet path="/GeneralImpl" class="com.company.lorum.gwt.server.implementations.GeneralServiceImpl" />
    <servlet path="/ProjectImpl" class="com.company.lorum.gwt.server.implementations.ProjectServiceImpl" />
</module>
  • Я попытался унаследовать свой CSS-файл в файл приветствия (Home.html), который работает; но он не применяет правила стиля к моим виджетам. И я не предпочитаю этот метод, так как разные браузеры по-разному работают с синтаксисом CSS. Хотя, если вы знаете, как заставить его работать, я буду его использовать. Это мой источник Home.html

:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf8"/>
    <link href="stylesheet.css" rel="stylesheet" type="text/css">
    <title>lorum</title>
</head>
<body>
<script language="javascript" src="lorum/lorum.nocache.js"></script>
</body>
</html>

Исходный код CSS (stylesheet.css) (это просто, потому что я просто хочу проверить, работает ли он):

.gwt-MenuBar {
color:green;
}
.gwt-Button {
font-size: 200%;
}

Под вопрос:
Где я должен хранить свой файл css, чтобы мой файл lorum.gwt.xml обнаружил и использовал его, используя следующий синтаксис: <stylesheet src='stylesheet.css' />

4 ответа

Решение

Есть два простых способа включить CSS-файл. Вы можете определить его в HTML, но если вы хотите переопределить уже принятое значение, вы должны использовать тег! Important в конце вашего CSS-атрибута.

Или вы можете определить это в себе YourName.java

public interface CellTabelResources extends CellTable.Resources {
    public interface CellTableStyle extends CellTable.Style {
    };

    @Source({ "style.css" })
    CellTableStyle cellTableStyle();
}

что делает ваш style.css наиболее важным, поэтому он перекрывает любой другой стиль.

Это сработало для меня, я не собираюсь голосовать за свой собственный ответ, только если другие люди подтвердят, что это решение также работает для них.

Это на самом деле довольно просто достичь в 2 простых шага.


Шаг 1.
поместите файл таблицы стилей (CSS) в папку вашего веб-приложения


Шаг 2.
Добавьте следующую строку в ваш файл gwt.xml:

<stylesheet src='/yourstylesheetname.css' />

ПРИМЕЧАНИЕ. Поместите эту строку между последним объявлением наследования и заявлением вашей точки входа.


ДОПОЛНИТЕЛЬНО: Мой источник gwt.xml:

<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='lorum'>
    <inherits name='com.google.gwt.user.User'/>
    <inherits name='com.google.gwt.user.theme.chrome.Chrome'/>
    <inherits name="com.google.gwt.resources.Resources" />

    <stylesheet src='/customsheet.css' />

    <entry-point class='com.company.lorum.gwt.client.LoadModuleLorum'/>

    <servlet path="/AuthenticationImpl" class="com.company.lorum.gwt.server.implementations.AuthenticationServiceImpl" />
    <servlet path="/GeneralImpl" class="com.company.lorum.gwt.server.implementations.GeneralServiceImpl" />
    <servlet path="/ProjectImpl" class="com.company.lorum.gwt.server.implementations.ProjectServiceImpl" />
</module> 

Дерево проекта

java     __ com __ company __ lorum __ gwt __ client __ **
                                           __ server __ **
                                           __ shared __ **
                                           __ Lorum.gwt.xml
resources__ **
webapp   __ WebFiles __ **
         __ WEB-INF  __ **
         __ Home.html
         __ mystylesheet.css

Если вы хотите поместить ссылку css в файл gwt.xml, вам нужно добавить файл в общую папку, а затем вы можете ссылаться на css относительно позиции скомпилированного файла, так как на него будет ссылаться из файла js, что браузер посмотрите в скомпилированную папку рядом с файлом. Однако вы можете поместить его в папку webapp, что также приведет к тому, что оно будет скопировано в целевой каталог и будет ссылаться на него из gwt.xml.

Положить его в файл HTML также работает. Но если вы переопределяете любой из стилей виджета по умолчанию, поместите ссылку css после файла.nocache.js, чтобы он переопределял свои значения

Проверьте это для получения дополнительной информации:

Где я могу разместить статические файлы для приложения GWT? Военная папка или общая папка?

Следующее решение работает для меня:

  1. поместите файл YourCss.css в тот же каталог, где находится YourApplication.html
  2. добавить следующую строку в <head> блок YourApplication.html:

    <link type="text/css" rel="stylesheet" href="YourCss.css">
    
Другие вопросы по тегам