Oracle Application Server Containers for J2EE JSPタグ・ライブラリおよびユーティリティ・リファレンス
10g(9.0.4)
       

拡張型のJavaBeansについて

このトピックでは、OC4Jで拡張型として提供されているJavaBeansを説明します。JSPページでは、拡張型はJavaプリミティブ型や標準java.lang型に比べ、有利な点が多いです。

このトピックには、次の項目が含まれます。

JML拡張型の概要

JSPページではスカラー値を表す場合、Java型の中心的なものを一般的に使用します。しかし、次にあげる型のカテゴリのいずれもJSPページには不適当です。

このような制限を回避するために、最も一般的なJava型として動作するよう、OC4Jではoracle.jsp.jmlパッケージに次のJavaBeanクラスが提供されています。

これらのクラスは単一属性であるvalueを持ちます。また、値を取得し、値が入力された際に各種書式で設定し、数種類の書式で指定された値と等しいかどうかをテストしてから文字列に変換するメソッドを含みます。

あるいは、getValue()メソッドおよびsetValue()メソッドを使用するかわりにjsp:getPropertyタグおよびjsp:setPropertyタグを他のBeanと同様に使用できます。

次の例ではapplicationスコープを持つcountというJmlNumberインスタンスが作成されます。


<jsp:useBean id="count" class="oracle.jsp.jml.JmlNumber" scope="application" />

この値がどこかで設定されている場合、後から次のようにしてアクセスできます。


<h3> The current count is <%=count.getValue() %> </h3>

次の例ではrequestスコープを持つmaxSizeというJmlNumberインスタンスが作成され、setPropertyを使用して設定されます。


<jsp:useBean id="maxSize" class="oracle.jsp.jml.JmlNumber" scope="request" >
    <jsp:setProperty name="maxSize" property="value" value="<%= 25 %>" />
</jsp:useBean>

JML拡張型の説明

この項では、4つの拡張型(JmlBooleanJmlNumberJmlFPNumberおよびJmlString)のpublicメソッドを説明し、例をあげます。


注意: 

JML拡張型を使用するには、ojsputil.jarファイルがインストール済で、クラスパスに存在していることを確認します。このファイルは、OC4Jに含まれています。


JmlBoolean型

JmlBooleanオブジェクトは、Javaのboolean値を表します。

getValue()メソッドおよびsetValue()メソッドにより、BeanのvalueプロパティがJavaのboolean値として取得または設定されます。

setTypedValue()メソッドにはいくつかのシグネチャがあり、文字列("true"または"false"など)、java.lang.Boolean値、Javaのboolean値またはJmlBoolean値からvalueプロパティを設定できます。文字列の入力の際には、java.lang.BooleanクラスのvalueOf()メソッドと同じ規則に従って文字列の変換が実行されます。

equals()メソッドは、valueプロパティが指定されたJavaのboolean値と等しいかどうかをテストします。

typedEquals()メソッドにはいくつかのシグネチャがあり、指定された文字列("true"または"false"など)、java.lang.Boolean値またはJmlBoolean値と等しい値がvalueプロパティにあるかどうかをテストします。

toString()メソッドはvalueプロパティをjava.lang.String値として、"true"または"false"で返します。

JmlNumber型

JmlNumberオブジェクトは、Javaのint値と同じく32ビットの数字を表します。

getValue()メソッドおよびsetValue()メソッドにより、BeanのvalueプロパティがJavaのint値として取得または設定されます。

setTypedValue()メソッドにはいくつかのシグネチャがあり、文字列、java.lang.Integer値、Javaのint値またはJmlNumber値からvalueプロパティを設定できます。文字列の入力の際には、java.lang.Integerクラスのdecode()メソッドと同じ規則に従って文字列の変換が実行されます。

equals()メソッドは、valueプロパティが指定されたJavaのint値と等しいかどうかをテストします。

typedEquals()メソッドにはいくつかのシグネチャがあり、指定された文字列("1234"など)、java.lang.Integer値またはJmlNumber値と等しい値がvalueプロパティにあるかどうかをテストします。

toString()メソッドはvalueプロパティを等しいjava.lang.String値("1234"など)として返します。このメソッドには、java.lang.IntegerクラスのtoString()メソッドと同じ機能があります。

JmlFPNumber型

JmlFPNumberオブジェクトは、Javaのdouble値と同じく64ビットの浮動小数点数を表します。

getValue()メソッドおよびsetValue()メソッドにより、BeanのvalueプロパティがJavaのdouble値として取得または設定されます。

setTypedValue()メソッドにはいくつかのシグネチャがあり、文字列("3.57"など)、java.lang.Integer値、Javaのint値、java.lang.Float値、Javaのfloat値、java.lang.Double値、Javaのdouble値またはJmlFPNumber値からvalueプロパティを設定できます。文字列の入力の際には、java.lang.DoubleクラスのvalueOf()メソッドと同じ規則に従って文字列の変換が実行されます。

equals()メソッドは、valueプロパティが指定されたJavaのdouble値と等しいかどうかをテストします。

typedEquals()メソッドにはいくつかのシグネチャがあり、指定された文字列("3.57"など)java.lang.Integer値、Javaのint値、java.lang.Float値、Javaのfloat値、java.lang.Double値、Javaのdouble値またはJmlFPNumber値がvalueプロパティにあるかどうかをテストします。

toString()メソッドはvalueプロパティをjava.lang.String値("3.57"など)として返します。このメソッドには、java.lang.DoubleクラスのtoString()メソッドと同じ機能があります。

JmlString型

JmlStringオブジェクトは、java.lang.String値を表します。

getValue()メソッドおよびsetValue()メソッドにより、Beanのvalueプロパティがjava.lang.String値として取得または設定されます。setValue()コールの入力がNULLの場合、valueプロパティは空の(長さゼロの)文字列に設定されます。

toString()メソッドの機能は、getValue()メソッドと同じです。

setTypedValue()メソッドは、指定されたJmlString値に従ってvalueプロパティを設定します。JmlString値がNULLの場合、valueプロパティは空の(長さゼロの)文字列に設定されます。

JmlString値がNULLの場合、valueプロパティは空の(長さゼロの)文字列("")に設定されます。

equals()メソッドには2つのシグネチャがあり、valueプロパティが指定されたjava.lang.String値またはJmlString値と等しいかどうかをテストします。

JML拡張型の例

この例では、スコープで単純な型を管理する場合のJML拡張型JavaBeansの使用方法を示します。このページでは、4つのセッション・オブジェクトが、それぞれ各JML型に対して宣言されています。このページでは、各型に値を入力できるフォームが提供されています。新しい値が送信されると、フォームにはこの新しい値および以前の設定値の両方が表示されます。この出力を生成するプロセスにおいて、ページではフォームに表示されたこの新しい値でセッション・オブジェクトが更新されます。


<jsp:useBean id = "submitCount" class = "oracle.jsp.jml.JmlNumber" scope = "session" />

<jsp:useBean id = "bool" class = "oracle.jsp.jml.JmlBoolean" scope = "session" >
        <jsp:setProperty name = "bool" property = "value" param = "fBoolean" />
</jsp:useBean>

<jsp:useBean id = "num" class = "oracle.jsp.jml.JmlNumber" scope = "session" >
        <jsp:setProperty name = "num" property = "value" param = "fNumber" />
</jsp:useBean>

<jsp:useBean id = "fpnum" class = "oracle.jsp.jml.JmlFPNumber" scope = "session" >
        <jsp:setProperty name = "fpnum" property = "value" param = "fFPNumber" />
</jsp:useBean>

<jsp:useBean id = "str" class = "oracle.jsp.jml.JmlString" scope = "session" >
        <jsp:setProperty name = "str" property = "value" param = "fString" />
</jsp:useBean>


<HTML>

<HEAD>
        <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=iso-8859-1">
        <META NAME="GENERATOR" Content="Visual Page 1.1 for Windows">
        <TITLE>Extended Datatypes Sample</TITLE>
</HEAD>

<BODY BACKGROUND="images/bg.gif" BGCOLOR="#FFFFFF">

<% if (submitCount.getValue() > 1) { %>
        <h3> Last submitted values </h3>
        <ul>
                <li> bool: <%= bool.getValue() %>
                <li> num: <%= num.getValue() %>
                <li> fpnum: <%= fpnum.getValue() %>
                <li> string: <%= str.getValue() %>
        </ul>
<% }

   if (submitCount.getValue() > 0) { %>

        <jsp:setProperty name = "bool" property = "value" param = "fBoolean" />
        <jsp:setProperty name = "num" property = "value" param = "fNumber" />
        <jsp:setProperty name = "fpnum" property = "value" param = "fFPNumber" />
        <jsp:setProperty name = "str" property = "value" param = "fString" />

        <h3> New submitted values </h3>
        <ul>
                <li> bool: <jsp:getProperty name="bool" property="value" />
                <li> num: <jsp:getProperty name="num" property="value" />
                <li> fpnum: <jsp:getProperty name="fpnum" property="value" />
                <li> string: <jsp:getProperty name="str" property="value" />
        </ul>
<% } %>

<jsp:setProperty name = "submitCount" property = "value" value = "<%= submitCount.getValue() + 1
%>" />

<FORM ACTION="index.jsp" METHOD="POST" ENCTYPE="application/x-www-form-urlencoded">
<P> <pre>
 boolean test: <INPUT TYPE="text" NAME="fBoolean" VALUE="<%= bool.getValue() %>" >
  number test: <INPUT TYPE="text" NAME="fNumber" VALUE="<%= num.getValue() %>" >
fpnumber test: <INPUT TYPE="text" NAME="fFPNumber" VALUE="<%= fpnum.getValue() %>" >
  string test: <INPUT TYPE="text" NAME="fString" VALUE= "<%= str.getValue() %>" >
</pre>

<P> <INPUT TYPE="submit">

</FORM>

</BODY>

</HTML>