Oracle Application Server Containers for J2EE JSPタグ・ライブラリおよびユーティリティ・リファレンス 10g(9.0.4) |
|
このトピックでは、OC4Jで拡張型として提供されているJavaBeansを説明します。JSPページでは、拡張型はJavaプリミティブ型や標準java.lang
型に比べ、有利な点が多いです。
このトピックには、次の項目が含まれます。
JSPページではスカラー値を表す場合、Java型の中心的なものを一般的に使用します。しかし、次にあげる型のカテゴリのいずれもJSPページには不適当です。
int
、float
およびdouble
のようなプリミティブ型
この型の値にはスコープが指定できません。スコープ・オブジェクトにはオブジェクトしか格納できないため、JSPスコープ・オブジェクト(page
、request
、session
またはapplication
スコープに対する)に格納できません。
Integer
、Float
およびDouble
のような標準java.lang
パッケージにあるラッパー・クラス
この型はオブジェクトなので、理論上はJSPスコープ・オブジェクトに格納できます。しかし、ラッパー・クラスはJavaBeanモデルを適用せず、引数ゼロのコンストラクタを提供しないため、jsp:useBean
操作で宣言できません。
さらに、ラッパー・クラスのインスタンスは不変です。値を変更するには、インスタンスを新たに作成し、適切に割り当てる必要があります。
このような制限を回避するために、最も一般的な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>
この項では、4つの拡張型(JmlBoolean
、JmlNumber
、JmlFPNumber
およびJmlString
)のpublicメソッドを説明し、例をあげます。
JmlBoolean
オブジェクトは、Javaのboolean
値を表します。
getValue()
メソッドおよびsetValue()
メソッドにより、Beanのvalue
プロパティがJavaのboolean
値として取得または設定されます。
setTypedValue()
メソッドにはいくつかのシグネチャがあり、文字列("true
"または"false
"など)、java.lang.Boolean
値、Javaのboolean
値またはJmlBoolean
値からvalue
プロパティを設定できます。文字列の入力の際には、java.lang.Boolean
クラスのvalueOf()
メソッドと同じ規則に従って文字列の変換が実行されます。
void setTypedValue(String)
void setTypedValue(Boolean)
void setTypedValue(boolean)
void setTypedValue(JmlBoolean)
equals()
メソッドは、value
プロパティが指定されたJavaのboolean
値と等しいかどうかをテストします。
typedEquals()
メソッドにはいくつかのシグネチャがあり、指定された文字列("true
"または"false
"など)、java.lang.Boolean
値またはJmlBoolean
値と等しい値がvalue
プロパティにあるかどうかをテストします。
toString()
メソッドはvalue
プロパティをjava.lang.String
値として、"true
"または"false
"で返します。
JmlNumber
オブジェクトは、Javaのint
値と同じく32ビットの数字を表します。
getValue()
メソッドおよびsetValue()
メソッドにより、Beanのvalue
プロパティがJavaのint
値として取得または設定されます。
setTypedValue()
メソッドにはいくつかのシグネチャがあり、文字列、java.lang.Integer
値、Javaのint
値またはJmlNumber
値からvalue
プロパティを設定できます。文字列の入力の際には、java.lang.Integer
クラスのdecode()
メソッドと同じ規則に従って文字列の変換が実行されます。
void setTypedValue(String)
void setTypedValue(Integer)
void setTypedValue(int)
void setTypedValue(JmlNumber)
equals()
メソッドは、value
プロパティが指定されたJavaのint
値と等しいかどうかをテストします。
typedEquals()
メソッドにはいくつかのシグネチャがあり、指定された文字列("1234
"など)、java.lang.Integer
値またはJmlNumber
値と等しい値がvalue
プロパティにあるかどうかをテストします。
toString()
メソッドはvalue
プロパティを等しいjava.lang.String
値("1234
"など)として返します。このメソッドには、java.lang.Integer
クラスのtoString()
メソッドと同じ機能があります。
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()
メソッドと同じ規則に従って文字列の変換が実行されます。
void setTypedValue(String)
void setTypedValue(Integer)
void setTypedValue(int)
void setTypedValue(Float)
void setTypedValue(float)
void setTypedValue(Double)
void setTypedValue(double)
void setTypedValue(JmlFPNumber)
equals()
メソッドは、value
プロパティが指定されたJavaのdouble
値と等しいかどうかをテストします。
typedEquals()
メソッドにはいくつかのシグネチャがあり、指定された文字列("3.57
"など)java.lang.Integer
値、Javaのint
値、java.lang.Float
値、Javaのfloat
値、java.lang.Double
値、Javaのdouble
値またはJmlFPNumber
値がvalue
プロパティにあるかどうかをテストします。
boolean typedEquals(String)
boolean typedEquals(Integer)
boolean typedEquals(int)
boolean typedEquals(Float)
boolean typedEquals(float)
boolean typedEquals(Double)
boolean typedEquals(JmlFPNumber)
toString()
メソッドはvalue
プロパティをjava.lang.String
値("3.57
"など)として返します。このメソッドには、java.lang.Double
クラスのtoString()
メソッドと同じ機能があります。
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拡張型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>