Transcript DiplayTag

Projektowanie warstwy serwera
DisplayTag
Plan wykładu
•
•
•
•
Projektowanie warstwy serwera
Prezentacja tablicy na stronie jsp
Konfiguracja biblioteki displayTag
Dekoratory
Współpraca z hibernate
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
2
Projektowanie warstwy serwera
Wystawianie danych
List, PaginatedList
List<Uzytkownik> list = uzytkownikService.loadAll());
model.addAttribute("uzytkownikList", list);
List<Uzytkownik> list =
uzytkownikService.findByCriteria(preselection);
PartialList<Uzytkownik> partialList =
new PartialList<Uzytkownik>(preselection, list);
model.addAttribute("uzytkownikList", partialList);
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
3
Wyświetlanie (I)
Projektowanie warstwy serwera
<display:table name=”uzytkownikList" />
<display:table list=”${uzytkownikList}”
style="width: 100%; overflow: auto;">
<display:column property="nazwisko" title="nazwisko"/>
<display:column property="imie" title="imię"/>
<display:column property=”pokoj.nazwa" title=”pokoj”/>
<display:column> cokolwiek </display:column>
</display:table>
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
4
Wyświetlanie (II)
Projektowanie warstwy serwera
<display:table name="uzytkownicy" id="uzytkownik”>
<display:column property="nazwisko" title="nazwisko”
maxWords=”2” />
<display:column property="imie" title="imię”
maxLength=”10” />
<display:column property=”pokoj.nazwa" title=”pokoj”
nulls=”true” />
<display:column title=”Aktywny" property=”aktywny"
decorator=”commons.BooleanWrapper” />
</display:table>
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
5
Projektowanie warstwy serwera
Liczba rekordów na stronie
<display:table name=”uzytkownicy" length="5">
<display:column property="email" autolink="true" />
</display:table>
<display:table name=”uzytkownicy" offset="3" length="5">
<display:table name="uzytkownicy" pagesize="10">
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
6
Projektowanie warstwy serwera
7
Sortowanie
<display:table name="uzytkownicy" sort="list"
defaultsort="1” defaultorder="descending”>
<display:column sortable="true" property="imie" title="imię"/>
<display:column property=”pokoj.nazwa" title=„pokoj„/>
</display:table>
sort = „page”
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
Projektowanie warstwy serwera
Podsumowanie
<display:table name="uzytkownicy" decorator =
"org.displaytag.decorator.TotalTableDecorator”>
<display:column property="nazwisko" title="nazwisko"/>
<display:column property="imie" title="imię"/>
<display:column property=”zarobki" title=”zarobki”
total="true" />
</display:table>
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
8
Nagłówek
Projektowanie warstwy serwera
<display:table name=”uzytkownicy">
<display:column property=”imie"/>
<display:column property=”nazwisko"/>
<display:caption>
Nagłówek tabeli
</display:caption>
</display:table>
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
9
Projektowanie warstwy serwera
Eksport
<display:table name="uzytkownicy" id="obiekt"
requestURI=”allUzytkownicy.htm” export="true”>
<display:column property="nazwisko" title="nazwisko"/>
<display:column property="imie" title="imię"/>
<display:column title=”” media="html">
<input type="radio" name="id" value="${obiekt.id}"/>
</display:column>
<display:setProperty name="export.excel.filename"
value="uzytkownik.xls”/>
</display:table>
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
10
Odwołanie do wierszy tabeli
Projektowanie warstwy serwera
<display:table name="uzytkownicy" id="obiekt">
<display:column title=”numer”>
<c:out value="${obiekt_rowNum}"/>
</display:column>
<display:column title=”pokoj">
<c:out value="${obiekt.pokoj.nazwa}"/>
</display:column>
</display:table>
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
11
Projektowanie warstwy serwera
Przekierowanie
<display:table name="uzytkownicy" id="obiekt">
<display:column property="nazwisko" title="nazwisko"/>
<display:column property="imie" title="imię"/>
<display:column title="" autolink="true" media="html">
<a href="<c:url
value=”uzytkownikRekord.html?&id=${obiekt.id}"/>">
zmień</a>
</display:column>
</display:table>
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
12
Projektowanie warstwy serwera
Lista z wyborem wielokrotnym
<display:table name="uzytkownicy" id="obiekt">
<display:column property="nazwisko" title="nazwisko"/>
<display:column property="imie" title="imię"/>
<display:column title="" media="html">
<form:checkbox path="lista" value="${obiekt.id}"/>
</display:column>
</display:table>
String[] lista;
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
13
Projektowanie warstwy serwera
Lista z pojedynczym wyborem
<display:table name="uzytkownicy" id="obiekt">
<display:column property="nazwisko" title="nazwisko"/>
<display:column property="imie" title="imię"/>
<display:column title="" media="html">
<input type="radio" CHECKED name=”id"
value="${obiekt.id}"/>
</display:column>
</display:table>
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
14
Projektowanie warstwy serwera
Ustawianie parametrów lokalnych
<display:table name="uzytkownicy" id="obiekt" sort="list" requestURI=”allUzytkownicy.htm"
pagesize="10”>
<display:column sortable="true" property="nazwisko" title="nazwisko"/>
<display:column sortable="true" property="imie" title="imię"/>
<display:column property=”pokoj.nazwa" title=„pokoj„/>
<display:setProperty name="paging.banner.item_name"
value="użytkownik">
</display:setProperty>
<display:setProperty name="paging.banner.items_name"
value="użytkowników">
</display:setProperty>
</display:table>
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
15
Projektowanie warstwy serwera
Ustawienie parametrów (I)
basic.msg.empty_list=Nie odnaleziono niczego do wyświetlenia.
error.msg.invalid_page=invalid page
paging.banner.no_items_found=<span class="pagebanner">Nie
znaleziono {0}.</span><hr/>
paging.banner.one_item_found=<span class="pagebanner">Znaleziono
jeden {0}.</span><hr/>
paging.banner.all_items_found=<span class="pagebanner">Znaleziono
{0} {1}, wyświetlono wszystkie.</span><hr/>
paging.banner.some_items_found=<span
class="pagebanner">Znaleziono {0} {1}, wyświetlono od {2} do
{3}.</span><hr/>
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
16
Projektowanie warstwy serwera
Ustawienie parametrów (II)
paging.banner.full=<span class="exportlinks">[<a
href="{1}">Pierwszy</a>/<a href="{2}">Poprzedni</a>] {0} [<a
href="{3}">Następny</a>/<a href="{4}">Ostatni</a>]</span><hr/>
paging.banner.first=<span class="exportlinks">[Pierwszy/Poprzedni] {0}
[<a href="{3}">Następny</a>/<a href="{4}">Ostatni</a>]</span><hr/>
paging.banner.last=<span class="exportlinks">[<a
href="{1}">Pierwszy</a>/<a href="{2}">Poprzedni</a>] {0}
[Następny/Ostatni]</span><hr/>
paging.banner.item_name=obiekt
paging.banner.items_name=obiekty(-\ów)
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
17
Projektowanie warstwy serwera
Ustawienie parametrów (III)
export.excel=true
export.excel.label=<span class="exportexcel">Excel</span>
export.excel.include_header=true
export.excel.filename= list.xls
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
18
Projektowanie warstwy serwera
Dekorator (I)
public class BooleanWrapper implements DisplaytagColumnDecorator
{
public Object decorate (Object columnValue, PageContext pageContext,
MediaTypeEnum media) throws DecoratorException
{
Boolean wartosc = (Boolean) columnValue;
if ( wartosc == null) return "";
if ( wartosc) return "tak";
return "nie";
}
}
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
19
Projektowanie warstwy serwera
Dekorator (II)
public class XMLGregorianCalendarWrapper implements
DisplaytagColumnDecorator {
private static XmlGregorianCalendarEditor editor = new
XmlGregorianCalendarEditor();
public Object decorate(Object columnValue, PageContext pageContext,
MediaTypeEnum media) throws DecoratorException
{
XMLGregorianCalendar data = (XMLGregorianCalendar) columnValue;
editor.setValue(data);
return editor.getAsText();
}
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
20
Projektowanie warstwy serwera
Dekorator (III)
public class DostepDecorator implements DisplaytagColumnDecorator {
public Object decorate(Object columnValue, PageContext pageContext,
MediaTypeEnum media) throws DecoratorException
{
WebApplicationContext ctx =
WebApplicationContextUtils.getWebApplicationContext(pageContext.
getServletContext());
KsiazkaService ksiazkaService = ctx.getBean(KsiazkaService.class);
UzytkownikService uzytkownikService =
ctx.getBean(UzytkownikService.class);
....
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
21
Projektowanie warstwy serwera
Modyfikacja widoku
$(document).ready(function() {
var interval = 6;
$tds = $("table[class=displaytag] td");
for (var i = 4; i<$tds.length; i+=interval) {
if ($tds.eq(i).text() == ("tak")) {
$tds.eq(i).parent().addClass('green');
} else if ($tds.eq(i).text() == ("nie")) {
$tds.eq(i).parent().addClass('red');
}}
});
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
22
Projektowanie warstwy serwera
Współpraca z hibernate - PartialList
public class PartialList<T> implements PaginatedList
private Preselection preselection;
private ArrayList<T>list;
int getFullListSize();
int getObjectsPerPage();
int getPageNumber();
String getSearchId();
String getSortCriterion();
SortOrderEnum getSortDirection();
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
23
Projektowanie warstwy serwera
Współpraca z hibernate - strona jsp
<display:table name="list" id="obiekt"
excludedParams = "*"
requestURI = ” uzytkownikList.html?” >
<display:column title="Lp.">${pozycja_rowNum}.
</display:column>
<display:column property="label" title="Imię i nazwisko"
sortable="true"/>
</display:table>
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
24
Projektowanie warstwy serwera
Współpraca z hibernate - Kontroler (I)
String sort = ServletRequestUtils.
getStringParameter(request, "sort”,null);
String dir = ServletRequestUtils.
getStringParameter(request, "dir”,null);
int page = ServletRequestUtils.
getIntParameter(request, "page", -1);
if ("label".equals(sort)) sort = "nazwisko";
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
25
Projektowanie warstwy serwera
Współpraca z hibernate - Kontroler (II)
if ( StringUtils.hasText( sort ) )
{
preselection.setSortProperty(sort);`
preselection.setSortAscending("asc".equals(dir));
preselection.setCurrentPage(0);
preselection.setCurrentRow(-1);
}
if ( page >= 1 ) preselection.setCurrentPage(page - 1);
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
26
Projektowanie warstwy serwera
Problem z eksportem
public boolean isExport(HttpServletRequest request)
{
int paramExport =
ServletRequestUtils.getIntParameter(request,
TableTagParameters.PARAMETER_EXPORTING, -1);
return (paramExport != -1);
}
Projekt współfinansowany przez Unię Europejską
w ramach Europejskiego Funduszu Społecznego
27