Thẻ điều khiển
JSTL (Java Standard Tag Library) là bộ thư viện thẻ chuẩn được sử
dụng để tăng cường cho sức mạnh của lập trình JSP.
Trong số các bộ thư viện thẻ được giới thiệu,
các thẻ điều khiển và định dạng được sử
dụng nhiều nhất. Vì vậy trong phần này, bạn sẽ được tìm hiểu về các thẻ làm việc
trong hai phần này.
Thẻ điều khiển
Khai báo thư viện thẻ lõi:
<%@ taglib
uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
Các thẻ điều khiển thuộc thư viện thẻ lõi gồm
<c:forEach> lệnh
lặp trên Map, Collection và Array
<c:if> lệnh if
<c:choose>...<c:when>:
lệnh if...elseif...else
Thẻ <c:if>
Thực thi phần thân của thẻ nếu giá trị của
thuộc tính test có giá trị true
<c:if test=”điều
kiện”>
Thân thẻ sẽ được thực hiện nếu điều kiện ở
thuộc tính @test đúng
</c:if>
Ví dụ: nếu
trong phạm vi
session có tồn tại thuộc
tính có tên
là user thì hiển thị
dòng <h1>Welcome <tên của
user trong session></h1>
<%@ page contentType="text/html;
charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<c:if test="${!empty sessionScope.user}">
<h1>Welcome ${sessionScope.user.fullName}</h1>
</c:if>
</body>
</html>
Thẻ <c:choose>
Bao bọc
các điều kiện loại
trừ lẫn nhau. Tương th if…else if….else trong java. Nếu điều kiện của
thuộc tính @test của thẻ <c:when> nào đúng thì thân của thẻ đó được thực
hiện. Ngoài ra thân của <c:otherwise> sẽ được thực hiện.
Cú pháp
<c:choose>
<c:when test=”điều kiện 1”></c:when>
<c:when test=” điều kiện N”></c:when>
…
<c:otherwise> </c:otherwise>
</c:choose>
Ví dụ: hiển thị lời chào tùy thuộc vào thời
điểm truy xuất trong ngày
<%@ page contentType="text/html;
charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<jsp:useBean id="date"
class="java.util.Date" scope="page"/>
<c:choose>
<c:when test="${date.hours < 12}">
<c:set var="greeting" value="Good morning !"/>
</c:when>
<c:when test="${date.hours > 17}">
<c:set var="greeting" value="Good evening !"/>
</c:when>
<c:otherwise>
<c:set var="greeting" value="Hello"/>
</c:otherwise>
</c:choose>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>${greeting}</h1>
</body>
</html>
Thẻ <c:forEach>
Bạn
có thể sử dụng
hành động <c:forEach> để lặp qua một cấu
trúc dữ liệu,
chẳng hạn như một mảng, Map, hoặc
tập hợp nếu bạn chỉ định cấu trúc dữ liệu với thuộc tính items.
Bạn cũng có thể sử dụng <c:forEach> để
lặp qua các giá trị số nguyên nếu bạn không chỉ định thuộc tính items.
Cách 1: lặp theo cấu trúc dữ liệu
<c:forEach items [begin] [end] [step]
[var] [varStatus]>
body content
</c:forEach>
Cách 2: duyệt các giá trị số nguyên
<c:forEach begin end [step] [var]
[varStatus]>
body content
</c:forEach>
Ý nghĩa các thuộc tính:
Ví dụ:
duyệt tập hợp items, mỗi item sẽ truy xuất
và hiển thị thuộc tính name và price.
<%@ page contentType="text/html;
charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib
uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<title>Học JSTL</title>
</head>
<body>
<c:forEach var="item"
items="${items}">
<ul>
<li>${item.name}</li>
<li>${item.price}</li>
</ul>
</c:forEach>
</body>
</html>
Thẻ định dạng
Với JSTL bạn có thể định dạng ngay và số rất dễ dàng trên JSP nhờ bộ thẻ định dạng. Bạn
cần khai báo thư viện thẻ định dạng trước khi sử dụng thẻ
Khai báo: <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
Thẻ định dạng ngày: <f:formatDate>
Thẻ định dạng số: <f:formatNumber>
Ví dụ 1: định dạng theo miền địa phương
<fmt:setLocale value='en-US'/> <!--chọn ngôn ngữ-->
English: <fmt:formatNumber value='1255.23'/>
<fmt:setLocale value='vi-VN'/>
Việt Nam: <fmt:formatNumber value='1255.23'/>
Kết quả: English: 1,255.23 Việt Nam: 1.255,23
Ví dụ 2: các kiểu định dạng
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Học JSTL</title>
</head>
<body>
<h1>Định dạng số và ngày</h1>
<jsp:useBean id="now" class="java.util.Date"/>
<ul>
<li>Ngày: <f:formatDate value="${now}" pattern="dd-MM-yyyy"/></li>
<li>Số lẻ: <f:formatNumber value="${12.5}" minFractionDigits="2"/></li>
<li>Tiền tệ: <f:formatNumber value="${123}" type="currency"/></li>
<li>Phần trăm: <f:formatNumber value="${0.23}" type="percent"/></li>
</ul>
</body>
</html>
إرسال تعليق