2012-04-16 11 views
9

Rozglądałem się i nie mogę znaleźć manekinowego przewodnika po dodaniu mojego własnego CSS do projektu strony internetowej Wicket. Ale zanim zacznę ... Jestem całkiem nowy w prawidłowym rozwoju java, więc kiedy mówię "Dummy's guide" naprawdę mam na myśli! Proste i jasne wyjaśnienia dla mnie są bardzo doceniane!Zasoby Wicket & CSS

Zacząłem od tego przewodnika tutaj (http://wicket.apache.org/start/quickstart.html) i mam to działa dobrze. Następnie chcę dodać własny kod CSS i zacząć z nim mieszać. I nigdzie się nie wybieram. Głównie dlatego, że nie mam pojęcia, jak to zrobić w Javie (pochodzę z tła C#/asp.net).

W każdym razie te, które wiedzą, Apache Wicket będzie wiedział, to już, ale źródło dla szybkiego startu tworzy swój kod w miejscu, jak następuje project/src/main/java/com/xyz

Co mogę domniemywać, co mogłem zrobić to dodać folder CSS tutaj .. . i tak stworzył CSS przykładowy i Wsadziłem go tutaj tak:

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

(containing something real simple like the following) 

h2 { 
    font-family: tahoma; 
} 

Potem usuwa domyślny css Wicket w moim homepage.html i zmienił go odwołać kopalni następująco:

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

Ale moja strona nie zwraca uwagi na conor.css ... Oczywiście robię coś nie tak, ale nie mogę znaleźć instrukcji "krok po kroku" dla manekina java (aka ja!).

Czytałem rzeczy, takie jak trzeba zainstalować narzędzia internetowe dla eclipse. Nie miałem pojęcia, co to oznacza dla mnie lub dlaczego poleci moim stronom korzystanie z CSS.

Każda pomoc jest bardzo cenna!

Odpowiedz

17

Podczas gdy Wicket analizuje znaczniki i próbuje wymyślić odpowiednie linki, musisz pomóc Wicket zrozumieć swój znacznik.

W twoim przypadku próbujesz połączyć się z zasobem, który znajduje się w ścieżce klasy Java. Różni się od kontekstowego katalogu głównego (znajdującego się w src/main/webapp). Różnica między zasobami ścieżek klas a zasobami kontekstowymi sieci polega na tym, że Wicket jest odpowiedzialna za dostęp do zasobów ścieżki klas i kontroluje ich dostęp do zasobów, a twój kontener (np. Pomost, tomcat, glassfish itp.) Jest odpowiedzialny za dostęp do zasobów kontekstowych sieci i kontroluje je .

Na przykład, gdy zasób jest pod kontrolą Wicket, możemy robić z nim różne rzeczy, takie jak substytucja zmiennych, kompresja, minifikacja, agregacja. Te rzeczy są częścią Wicket.

Teraz, w twoim problemie, ponieważ nie powiedziałeś Wicket, że powiązane zasoby są pod jego kontrolą, Wicket zakłada, że ​​chcesz, aby pojemnik sobie z nimi poradził. Aby temu zaradzić, dodaj znacznik <wicket:link> wokół znaczników <link>.

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

W <wicket:link> tags powiedzieć furta szukać załączonych zasobów i starają się rozwiązać je na ścieżce klasy Java.

+1

Doskonale, dzięki za to. Zarówno umieszczanie tagu wicket: links przy pomocy tagu i dodawanie go do webappa wydaje się działać. Pytanie jednak ... jaki jest zalecany sposób na zrobienie tego? –

+0

W zależności od przypadku użycia. W przypadku komponentów wielokrotnego użytku, chcesz umieścić js i css obok komponentu. W przypadku aplikacji potrzebujesz tylko jednego dużego pliku js i jednego dużego pliku css. –

+0

Doskonałe dzięki. Myślę, że pójdę z folderem Webapp, ponieważ jest to po prostu cała strona css, którą będę potrzebować. –

3

Generalnie powinieneś dodać swoje css w projekcie/src/main/webapp/css, a następnie będzie dostępne przez css/conor.css

+0

Dziękuję za tę odpowiedź. Pomiędzy twoim wkładem a Martijnsem odkryłem, czego potrzebowałem. –

2

można załadować pliki css na swojej stronie java przejściowymi tak:

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

Jeśli masz pliki CSS w swoich projektach można załadować na początku.