忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/04/19 22:35 |
JSP1-4:標準タグライブラリを使用

JSPは使ってはいけない、ELだけでは何もできないということで、さらにJSTLという拡張タグライブラリが作られました。
JakartaTaglibsというタグライブラリが一般的に使われているのでそれを使ってみましょう。
何故か最初から入っていないのでダウンロードしてくる必要があります。
http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi

解凍したら、中に入っているlib/jstl.jarとlib/standard.jarを、WEB-INF/libディレクトリにコピーします。
その後、タグライブラリを使用するJSPに
<%@taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c' %>
と書くと、JSPでライブラリを使用することができます。
何故実際にライブラリが入っている場所ではなくて変なURLを書かねばならないのかはまたいつか。

とりあえず使ってみましょう。

<c:out value="あいうえお">

ただでさえ<%out.println>、<%=>、${}と同じようなものがいっぱいあるのにまた増えるの?
また増えました。
特徴は
<c:out value="${sessionScope.data1}" default="データがありません" escapeXml=true>
というふうに何も無かった場合のデフォルトを設定できることと、HTMLタグのエスケープができることです。
これだけやってようやくhtmlspecialcharsに肩を並べることができました。

<c:set var="data2" value="<b>value2</>" scope="page">

setAttributeと何がちがうの?
さあ?

<c:import url="include.jsp" context="/example2">

<%@include file %><jsp:include page>があるのにまた増えました。
上記と違う点は、別のコンテキストに存在するJavaアプリケーションを取り込めることです。
もっともそんなことをしなければならない時点で設計を失敗しているわけですが。

以下は選択及び繰り返し処理の例です。
 

<c:forEach items="[1,2,3,4,5,6]" var="var" varStatus="varStatus">
    <c:if test="${var % 2 == 0}">
        ${var}は偶数
    <c:if>
    <c:if test="${var % 2 == 1}">
        ${var}は奇数
    <c:if>
    ループ回数は${varStatus.count}
</c:forEach>

<c:forEach items="[1,2,3,4,5,6]" var="var" varStatus="varStatus">
    <c:choose>
        <c:when test="${var %2 == 0}">
            ${var}は偶数
        </c:when>
        <c:when test="${var %2 == 1}">
            ${var}は奇数
        </c:when>
        <c:otherwise>
            ${var}は偶数でも奇数でもない?
        </c:otherwise>
    </c:choose>
</c:forEach>


Javaに限りませんが、Webプログラミングは、デザインからロジックを排除して排除して、その結果何もできなくなるのでこうやってスクリプトっぽいことを追加して、それでまたロジックがデザインに入り込んでくる、そんなことを何度も繰り返しています。
JSTLもまたそのような道に入り込んでいるように見えます。

PR


2008/08/06 15:52 | Comments(0) | TrackBack() | Java

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<JSP1-5:カスタムタグでHelloWorld | HOME | PHP1-12:array_multisort>>
忍者ブログ[PR]