SAStruts 入門

JSPファンクション 独自のファンクションの作成

スポンサード リンク


概要

SAStrutsではあらかじめいくつかのファンクションが用意されていますが、独自の処理を行うためのJSPのファンクションを作成することも可能です。
今回は作成を方法を記載してみたいと思います。
サンプルとして、金額に消費税を追加して表示するメソッドを追加したいと思います。

作成手順

  1. staticメソッドの作成
  2. タグライブラリ・ディスクリプタの作成
  3. common.jspへ記述
  4. jspでの使用

以上のような手順で作成することができます。

1.staticメソッドの作成


まずJSPから呼び出す先のJavaの静的メソッドを作成します。
作成するパッケージは特に指定はないので、今回はsnowhiro.utilというパッケージを作成しそこに保存します。

OrignalFunction.java

package snowhiro.util;

import java.math.BigDecimal;

/**
 * Jspで使用する静的メソッドを記載します。
 *
 * */
public class OrignalFunction {

    /**
     * 消費税を計算します。
     * @param argMoney 金額
     * @return 計算後の金額
     * @throws NumberFormatException 入力の値が数字に変換できない場合
     * */
    public static final String calTax(String argMoney) {

        final BigDecimal tax = new BigDecimal("1.05");

        BigDecimal money = null;
        try {
            money = new BigDecimal(argMoney);
        } catch (NumberFormatException e) {
            throw new NumberFormatException("消費税の計算に失敗しました。");
        }

        return Integer.toString(money.multiply(tax).intValue());
    }
}

2.タグライブラリ・ディスクリプタの作成

次に作成したメソッドを設定するためのtldを作成します。
作成する場所はWEB-INFの配下になります。
今回はWEB-INFの配下にtldというフォルダを作成しそこに「original.tld」という名前で保存します。
作成後の構成は以下のようになります。

作成後の構成

作成したファイルの内容は以下のようになります。

original.tld

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
 version="2.0">
  <tlib-version>2.0</tlib-version>
  <function>
    <name>calTax</name>
    <function-class>snowhiro.util.OrignalFunction</function-class>
    <function-signature>java.lang.String calTax(java.lang.String)</function-signature>
  </function>
</taglib>

3.common.jspへ記述

次に作成したtldを設定します。
本来はweb.xmlに記載するのですがSAStrutsでは、webapp/WEB-INF/view/common/common.jspに共通で使う宣言が定義されているのでそこに今回作成したtldを追加します。

common.jsp

<%@page pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@taglib prefix="html" uri="http://struts.apache.org/tags-html"%>
<%@taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
<%@taglib prefix="tiles" uri="http://jakarta.apache.org/struts/tags-tiles"%>
<%@taglib prefix="s" uri="http://sastruts.seasar.org" %>
<%@taglib prefix="f" uri="http://sastruts.seasar.org/functions" %>
<%@taglib prefix="o" uri="/WEB-INF/tld/original.tld" %>

<%@taglib prefix="o" uri="/WEB-INF/tld/original.tld" %>
の部分が今回追記した部分になります。
prefixは重複はできないので,oとしていますが他の文字列でも問題ありません。

4.jspでの使用

最後にJSPで実際に使用します。

Actionクラス(一部抜粋)

    @Resource
    protected HttpServletRequest request;

    @Execute(validator=false)
    public String index() {

        request.setAttribute("money", "100");

        return indexJsp;
    }

JSP(一部抜粋)

<div>
    <span>独自のfunctionを作成する:消費税の計算</span>
    <br /><span>金額:${money}円</span>
    <br /><span>税込:${o:calTax(money)}円</span>
</div>

実際に実行した結果は以下のようになります。

実行結果

このようにJSPから簡易にJavaのstaticメソッドを呼び出すことができます。

これからSeasar2を勉強するならこの一冊は必須といえるくらい完成度の高い本ではないでしょうか。
主要プロダクトのSAStruts/S2JDBCはもちろんその他のサブプロジェクトについても記述されておりリファレンス的な使い方もできるかと思います。



JSPファンクション一覧に戻る
inserted by FC2 system