[ Pobierz całość w formacie PDF ]
NumberFormatException). Poza tym, jeśli którykolwiek z operandów jest typu
BigInteger lub BigDecimal, to system wykona działania używając odpowiednich
metod add lub subtract.
Operatory *, / oraz div
To standardowe operatory mnożenia i dzielenia, które mają kilka cech szczególnych.
Przede wszystkim, podobnie jak w przypadku operatorów + oraz -, typy operandów
są konwertowane automatycznie. Po drugie, podczas wykonywania działań
uwzględniany jest standardowy priorytet operatorów. A zatem poniższe wyrażenie:
${1 + 2 * 3 }
zwróci wartość 7, a nie 9. Kolejność wykonywania poszczególnych działań można
zmieniać przy użyciu nawiasów. Po trzecie, operatory / oraz div mają to samo
działanie; są one dostępne w celu zapewnienia zgodności z językami XPath
oraz JavaScript (ECMAScript).
Operatory % oraz mod
Operator % (oraz stanowiący jego odpowiednik operator mod) obliczają moduł
(czyli resztę z dzielenia) analogicznie jak operator % języka Java.
Operatory relacyjne
Operatory relacyjne najczęściej są stosowane wraz z operatorem warunkowym udostępnia-
nym przez język wyrażeń (patrz podrozdział 16.10), bądz też w znacznikach niestandardo-
wych, których atrybuty wymagają podania wartości logicznej (na przykład, w znacznikach
umożliwiających wielokrotne przetwarzanie, takich jak te dostępne w bibliotece JSLT, opi-
sanej w II tomie niniejszej książki).
Operatory == oraz eq
Te dwa równoważne sobie operatory sprawdzają, czy podane argumenty są sobie
równe. Jednak pod względem sposobu działania przypominają one raczej metodę
equals Javy, niż stosowany w tym języku operator ==. Operatory te zwracają
wartość true, jeśli oba operandy są tym samym obiektem. Jeśli operandy są
liczbami, to zostają one porównane przy użyciu standardowego operatora == Javy.
Jeśli jeden z operandów ma wartość null, to porównanie zawsze zwraca wartość
false. Jeśli któryś z operandów jest obiektem typu BigInteger lub BigDecimal,
to operandy są porównywane przy użyciu metody compareTo. We wszystkich
pozostałych przypadkach operandy są porównywane przy użyciu metody equals.
448 Część II JavaServer Pages
Operatory != oraz ne
Te dwa równoważne sobie operatory sprawdzają, czy podane argumenty są różne
od siebie. Jednak także i one pod względem sposobu działania przypominają
raczej negację metody equals Javy, niż stosowany w tym języku operator !=.
Jeśli oba operandy są tym samym obiektem, to operatory te zwracają wartość false.
Jeśli operandy są liczbami, to zostają one porównane przy użyciu standardowego
operatora != Javy. Jeśli jeden z operandów ma wartość null, to porównanie zawsze
zwraca wartość true. Jeśli któryś z operandów jest obiektem typu BigInteger
lub BigDecimal, to operandy są porównywane przy użyciu metody compareTo.
We wszystkich pozostałych przypadkach operandy są porównywane przy użyciu
metody equals, a wynik wyrażenia jest negacją wartości zwróconej przez tę metodę.
Operatory i gt, = i ge
Są to standardowe operatory relacyjne, które mają jednak dwie cechy szczególne.
Przede wszystkim, porównywane operandy są poddawane konwersji typów
(analogicznie jak w przypadku operatorów == oraz !=). A poza tym, jeśli operandy
są łańcuchami znaków, to zostaną one porównane alfabetycznie.
Operatory logiczne
Te operatory służą do łączenia wyników zwracanych przez operatory relacyjne.
Operatory &&, and, ||, or, ! oraz not
To standardowe operatory logicznej koniunkcji (AND), alternatywy (OR) oraz
zaprzeczenia (!). W pierwszej kolejności konwertują one operandy do wartości
logicznych, a następnie używają standardowych operatorów logicznych Javy
o skróconym cyklu przetwarzania (które sprawiają, że przetwarzanie wyrażenia
zostaje przerwane, kiedy tylko zostanie określony jego ostateczny wynik).
Operator && jest równoważny z operatorem and, operator || jest równoważny
z or, a ! równoważny z not.
Operator empty
Ten operator zwraca wartość true, jeśli jego argumentem jest wartość null, pusty łańcuch
znaków, pusta tablica, pusty obiekt Map lub pusta kolekcja. W przeciwnym razie operator
zwraca wartość false.
Przykład
Listing 16.11 przedstawia zastosowanie kilku standardowych operatorów. Wyniki zostały
pokazane na rysunku 16.6.
Rozdział 16. Upraszczanie dostępu do kodu Javy: język wyrażeń JSP 2.0 449
Listing 16.11. operators.jsp
Operatory języka wyrażeń
HREF="/el/JSP-Styles.css"
TYPE="text/css">
Operatory języka wyrażeń
Operatory arytmetyczne
Operatory relacyjne
WyrażenieWynikWyrażenieWynik
\${3+2-1}${3+2-1}
\${1<2}${1
\${"1"+2}${"1"+2}
\${"a"<"b"}${"a"
\${1 + 2*3 + 3/4}${1 + 2*3 + 3/4}
\${2/3 >= 3/2}${2/3 >= 3/2} = --%>
\${3%2}${3%2}
\${3/4 == 0.75}${3/4 == 0.75}
\${(8 div 2) mod 3}${(8 div 2) mod 3}
false w razie podania wartości null --%>
\${null == "test"}${null == "test"}
Operatry logiczne
Operator empty
WyrażenieWynikWyrażenieWynik
\${(1<2) && (4<3)}${(1
\${empty ""}${empty ""}
\${(1<2) || (4<3)}${(1
\${empty null}${empty null}
450 Część II JavaServer Pages
\${!(1<2)}${!(1
w parametrach żądania --%>
\${empty param.blah}${empty param.blah}
Rysunek 16.6.
Język wyrażeń
JSP 2.0
udostępnia
niewielki zbiór
operatorów.
Należy ich używać
z dużym umiarem
logika
biznesowa
powinna być
wykonywana
przez serwlety,
a nie na stronach
JSP
16.10. Warunkowe przetwarzanie wyrażeń
Język wyrażeń JSP 2.0 sam w sobie nie udostępnia bogatych możliwości realizacji logiki
warunkowej. Możliwości, jakimi dysponuje, w rzeczywistości zapewniają znaczniki c:if
oraz c:choose biblioteki JSTL (ang. JSP Standard Template Library), bÄ…dz jakiejkolwiek
innej biblioteki znaczników niestandardowych. (Zagadnienia związane ze stosowaniem bi-
blioteki JSTL oraz tworzeniem znaczników niestandardowych zostały opisane w II tomie
niniejszej książki).
Niemniej jednak, język wyrażeń udostępnia podstawowy operator ?:, doskonale znany
z języków Java, C oraz C++. Na przykład, jeśli wyrażenie test przyjmie wartość true, to
poniższe wyrażenie:
${ test ? wyrażenie1 : wyrażenie2 }
Rozdział 16. Upraszczanie dostępu do kodu Javy: język wyrażeń JSP 2.0 451
zwróci wartość wyrażenia wyrażenie1; w przeciwnym przypadku zwróci ono wartość wy-
rażenia wyrażenie2. Nie można jednak zapominać, iż podstawowym przeznaczeniem języka
wyrażeń jest upraszczanie logiki prezentacji; dlatego należy pamiętać, by nie stosować tego
operatora do wykonywania operacji zwiÄ…zanych z logikÄ… biznesowÄ….
Przykład
[ Pobierz całość w formacie PDF ]