Wicket & CSS ресурсы

Я искал вокруг, и я не могу найти руководство манекена для добавления моего собственного CSS в проект веб-сайта Wicket. Но прежде чем я начну... Я довольно новичок в правильной разработке Java, поэтому, когда я говорю "Dummy's guide", я действительно это имею в виду! Простые и понятные объяснения для меня здесь очень ценятся!

Я начал с этого руководства здесь ( http://wicket.apache.org/start/quickstart.html), и оно работает нормально. Далее я хочу добавить свой собственный CSS и начать с ним возиться. И я быстро никуда не ухожу. Главным образом потому, что я не имею понятия, как это сделать в Java (я пришел из C#/asp.net фона).

В любом случае, те, кто знает Apache Wicket, уже знают об этом, но источник для быстрого старта создает ваш код в следующем месте project/src/main/java/com/xyz

Я предполагал, что смогу добавить сюда папку CSS... поэтому я создал образец CSS и воткнул его вот так:

project/src/main/java/com/xyz/css/conor.css

(containing something real simple like the following)

h2 {
    font-family: tahoma;
}

Затем я удалил css по умолчанию в Wicket в своем homepage.html и изменил его на ссылку на мою, как показано ниже:

<link rel="stylesheet" href="css/conor.css" type="text/css" />

Но моя страница не учитывает conor.css... Очевидно, я делаю что-то не так, но не могу найти пошаговое руководство для Java-манекена (иначе меня!).

Я прочитал такие вещи, как вам нужно установить веб-инструменты для затмения. Я понятия не имел, что мне это нужно или почему он будет инструктировать мои страницы использовать CSS.

Любая помощь очень ценится!

3 ответа

Решение

Пока Wicket анализирует разметку и пытается найти правильные ссылки, вы должны помочь Wicket понять вашу разметку.

В вашем случае вы пытаетесь связаться с ресурсом, который находится в пути к классам Java. Это отличается от корня веб-контекста (находится в src/main/webapp). Разница между ресурсами пути к классу и ресурсами веб-контекста заключается в том, что Wicket отвечает за доступ к ресурсам пути к классу и контролирует его, а ваш контейнер (т. Е. Jetty, tomcat, glassfish и т. Д.) Отвечает и контролирует доступ к ресурсам веб-контекста.

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

Теперь о вашей проблеме, поскольку вы не сказали Wicket, что связанные ресурсы находятся под его контролем, Wicket предполагает, что вы хотите, чтобы контейнер обрабатывал их. Чтобы смягчить это, вы должны добавить <wicket:link> пометить вокруг <link> тег (s).

<head>
    ...
    <wicket:link>
    <link rel="stylesheet" href="css/conor.css" type="text/css" />
    ...
    </wicket:link>
</head>

<wicket:link> теги говорят Wicket искать вложенные ресурсы и пытаться разрешить их по пути классов Java.

В общем случае вы должны добавить свой CSS в проект /src/main/webapp/css, а затем к нему будет обращаться css/conor.css

Вы можете загрузить свои CSS-файлы на своей Java-странице калитки следующим образом:

@Override
public void renderHead(IHeaderResponse response) {
    response.render(CssHeaderItem.forReference(new CssResourceReference(myCssFile.class, "myCssFile.css")));
}

Если в ваших проектах есть файлы css, вы можете загрузить их изначально.

Другие вопросы по тегам