| Oracle Containers for J2EE JSPタグ・ライブラリおよびユーティリティ・リファレンス 10g(10.1.3.1.0) B31854-01 |
|
|
注意 Oracle JSP Markup Language(JML)タグ・ライブラリは、Oracle Application Server 10gリリース3(10.1.3)から正式にサポート外になりました。 開発者は、JavaServer Pages標準タグ・ライブラリ(JSTL)提供のタグを使用する必要があります。JSTLでは、標準化された実装にJMLと類似した機能がカプセル化されています。JSTLの詳細は、第2章「JavaServer Pages標準タグ・ライブラリのサポート」を参照してください。 |
この付録では、Oracle JSP Markup Language(JML)拡張型、すなわちJSPページで使用されるJavaのプリミティブ型のラップのために使用できるJavaBeanクラスについて説明します。
この付録には、次の項目が含まれます。
JSPページでは、スカラー値の表現をコアとなるJavaの型に依存しています。ただし、次の型カテゴリは、いずれもJSPページでの使用に適していません。
int、floatおよびdoubleなど)これらの型の値には、スコープを指定できません。つまり、JSPのスコープ・オブジェクト(page、request、sessionまたはapplicationスコープ)に格納できません。これは、スコープ・オブジェクトに格納できるのはオブジェクトのみであるためです。
java.langパッケージにあるラッパー・クラス(Integer、FloatおよびDoubleなど)これらの型の値はオブジェクトであるため、理論上ではJSPスコープ・オブジェクトに格納できます。ただし、ラッパー・クラスはJavaBeanモデルに準拠しておらず、引数が0(ゼロ)のコンストラクタを提供していないため、jsp:useBean操作でこの型を宣言できません。
さらに、ラッパー・クラスのインスタンスは不変です。値を変更するには、インスタンスを新たに作成して、適切に割り当てる必要があります。
これらの制限事項を回避するために、OC4Jでは、最も一般的なJavaの型に対してラッパーとして動作する、次のJavaBeanクラスをoracle.jsp.jmlパッケージに用意しています。
これらのクラスには、それぞれ1つの属性valueがあり、値の取得、各種フォーマットへの入力値の設定、その値が複数のフォーマットのいずれかに指定した値と等しいかどうかのテスト、およびその値の文字列への変換などを行うメソッドが組み込まれています。
あるいは、getValue()メソッドおよびsetValue()メソッドを使用せずに、他のBeanのように、jsp:getPropertyタグおよびjsp:setPropertyタグを使用することもできます。
次の例では、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)のパブリック・メソッドについて説明し、例を示します。
JmlBooleanオブジェクトは、Java boolean値を表します。
getValue()メソッドとsetValue()メソッドは、BeanのvalueプロパティをJava boolean値として取得または設定します。
setTypedValue()メソッドには複数のシグネチャがあり、valueプロパティを文字列(「true」や「false」など)、java.lang.Boolean値、Java boolean値またはJmlBoolean値から設定できます。文字列の入力については、java.lang.BooleanクラスのvalueOf()メソッドと同じルールに従って、文字列の変換が実行されます。
void setTypedValue(String)
void setTypedValue(Boolean)
void setTypedValue(boolean)
void setTypedValue(JmlBoolean)
equals()メソッドは、valueプロパティが、指定したJava boolean値と等しいかどうかをテストします。
typedEquals()メソッドには複数のシグネチャがあり、valueプロパティの値が、指定した文字列(「true」や「false」など)、java.lang.Boolean値またはJmlBoolean値と等しいかどうかをテストします。
toString()メソッドは、valueプロパティをjava.lang.String値(「true」または「false」のいずれか)として戻します。
JmlNumberオブジェクトは、Java int値に等しい32ビットの数値を表します。
getValue()メソッドとsetValue()メソッドは、BeanのvalueプロパティをJava int値として取得または設定します。
setTypedValue()メソッドには複数のシグネチャがあり、valueプロパティを文字列、java.lang.Integer値、Java int値またはJmlNumber値から設定できます。文字列の入力については、java.lang.Integerクラスのdecode()メソッドと同じルールに従って、文字列の変換が実行されます。
void setTypedValue(String)
void setTypedValue(Integer)
void setTypedValue(int)
void setTypedValue(JmlNumber)
equals()メソッドは、valueプロパティが、指定したJava int値と等しいかどうかをテストします。
typedEquals()メソッドには複数のシグネチャがあり、valueプロパティの値が、指定した文字列(「1234」など)、java.lang.Integer値またはJmlNumber値と等しいかどうかをテストします。
toString()メソッドは、valueプロパティを等価のjava.lang.String値(「1234」など)として戻します。このメソッドの機能は、java.lang.IntegerクラスのtoString()メソッドの機能と同じです。
JmlFPNumberオブジェクトは、Java double値に等しい64ビットの浮動小数点の数値を表します。
getValue()メソッドとsetValue()メソッドは、BeanのvalueプロパティをJava double値として取得または設定します。
setTypedValue()メソッドには複数のシグネチャがあり、valueプロパティを文字列(「3.57」など)、java.lang.Integer値、Java int値、java.lang.Float値、Java float値、java.lang.Double値、Java double値またはJmlFPNumber値から設定できます。文字列の入力については、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値と等しいかどうかをテストします。
setTypedValue()メソッドには複数のシグネチャがあり、valueプロパティを文字列(「3.57」など)、java.lang.Integer値、Java int値、java.lang.Float値、Java float値、java.lang.Double値、Java double値またはJmlFPNumber値から設定できます。
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プロパティは、空(0(ゼロ)長)の文字列に設定されます。
toString()メソッドの機能は、getValue()メソッドの機能と同じです。
setTypedValue()メソッドは、valueプロパティを、指定したJmlString値に従って設定します。JmlString値がnullの場合、valueプロパティは、空(0(ゼロ)長)の文字列に設定されます。
isEmpty()メソッドは、valueプロパティが空(0(ゼロ)長)の文字列かどうかをテストします。
equals()メソッドには2つのシグネチャがあり、valueプロパティが、指定したjava.lang.String値またはJmlString値と等しいかどうかをテストします。
この例では、スコープで単純な型を管理するJML拡張型JavaBeansの使用例を示します。このページでは、4つのセッション・オブジェクト(各JML型に対して1つ)を宣言します。また、このページは開発者が各型に値を入力できるフォームを提供しています。新しい値が入力されたフォームには、新しい値と以前設定された値の両方が表示されます。この出力の生成中に、ページはセッション・オブジェクトを新しいフォーム値によって更新します。
<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>
|
![]() Copyright © 2002, 2006 Oracle Corporation. All Rights Reserved. |
|