środa, 8 kwietnia 2009

Rozdział 3. Budujemy pierwszą aplikację (część I)

W rozdziale trzecim zostały zebrane wszystkie informacje w całość. Autorzy budują prostą aplikację, której zadaniem jest sprzedaż różnego rodzaju serów (jeden z autorów książki jest Duńczykiem i w rozdziale drugim twierdził, że jest ich miłośnikiem...). Tak jak zostało to wspomniane w poprzednich rozdziałach każda aplikacja musi mieć główną klasę rozszerzającą WebApplication. Zwraca ona stronę główną w metodzie:

public Class getHomePage()
{
return Index.class; // klasa reprezentująca stronę główną
}

W rozdziale szczególna uwaga została skupiona na wyświetlaniu różnego rodzaju list. W Wicket jest to zadziwiająco przyjemne. Zacznijmy od prostej listy bez stronnicowania. Stworzymy plik Index.html i klasę z nim związaną Index. Najpierw trochę kodu:
Index.html


<div wicket:id="books">
<h3 wicket:id="title">Tytuł książki</h3>
<p wicket:id="autor">Autor</p>
<p wicket:id="cena">Cena</p>
<a wicket:id="dodaj" href="#">do koszyka</a>
</div>
<wicket-remove>
<div wicket:id="books">
<h3 wicket:id="title">Tytuł książki</h3>
<p wicket:id="autor">Autor</p>
<p wicket:id="cena">Cena</p>
<a wicket:id="dodaj" href="#">do koszyka</a>
</div>
</wicket-remove>
A teraz trochę magii i Wicket na podstawie powyższego kodu stworzy ładną listę :)
Index:


public class Index extends WebPage {
public Index() {
add(new ListView("books",BookStoreApplication.get().getBooks()){
protected void populateItem(ListItem listItem) {
Book book = (Book) listItem.getModelObject();
listItem.add(new Label("tytul", book.getTitle()));
listItem.add(new Label("autor", book.getAuthor()));
listItem.add(new Label("cena", ""+book.getPrice()));
listItem.add(new Link("dodaj",listItem.getModel()){
public void onClick() {
Book selectedBook = (Book) getModelObject();
//teraz możemy dodać książkę np. do koszyka w sesji
}
});
}
});

Oczywiście należy się trochę wyjaśnień. Skąd wziąć listę książek? Oczywiście z bazy, ale można też np. w celach testowych w klasie aplikacji stworzyć sobie zwykłą listę. Do klasy tej mamy dostęp z poziomu wszystkich stron można więc umieścić w niej np. referencję do DAO. Ponadto w kodzie HTML da się zauważyć nowy znacznik . Kod umieszczony w tym tagu zostanie usunięty. Służy on tylko i wyłącznie do lepszej prezentacji widoku. Myślę, że reszta powinna być w miarę jasna.
W kolejnej części relacji z rozdziału trzeciego znajdzie się kilka informacji na temat wykorzystania formularzy oraz zastosowania stronnicowanych list.

Brak komentarzy: