10.1.2ワークスペースまたは10.1.2プロジェクトをJDeveloper 10.1.3で開くと、struts-config.xml
およびstruts-config.xml
に関連付けられているダイアグラムが10.1.3に移行します。当初のStruts構成ファイル(struts-config.xml
)は、ファイルの移行前にstruts-config.xml_1012
という名前で同じディレクトリに保存されます。Oracle ADFの機能を使用しないStrutsアプリケーションでは、struts-config.xml
を移行する必要はありません。関連するダイアグラム・ファイルstruts-config.oxd_struts
は自動的に移行されます。
ADFアプリケーションのstruts-config.xml
は、10.1.2で使用したカスタム・コードを示す追加情報を使用して、一部(具体的にはDataActionおよびDataPageアクション要素)をstruts-config.xml
10.1.3書式に変換することで、10.1.2から10.1.3に移行されます。10.1.3ランタイムは、アプリケーションによる10.1.2実装の使用を検出し、10.1.2で使用したライフサイクルと同じライフサイクルを使用して処理します。
10.1.3 ADFのライフサイクルを利用する場合は、アプリケーションを更新してください。詳細は、「10.1.2からADFページ・ライフサイクルへの変換」を参照してください。
このトピックでは、次の項目について説明します。
Struts構成ファイルの次の要素は、ADFによる修正がなかったため変更されません。
ADFによってカスタマイズされたStruts構成ファイルの要素については、アクション要素とデータ・フォームBeanのみが移行されます。
次の各項では、10.1.2 Strutsアプリケーションの特定要素を10.1.3に移行する方法の詳細を説明します。
カスタム・クラスが指定されていない単純なDataActionは完全に移行されます。10.1.3での追加変更は不要です。
たとえば、次のような10.1.2の典型的なDataPageの<action>
定義があるとします。
<action path="/home"
className="oracle.adf.controller.struts.actions.DataActionMapping"
type="oracle.adf.controller.struts.actions.DataForwardAction"
name="DataForm" parameter="/index.jsp" unknown="true">
...
</action>
これは、次のように移行されます。
<action path="/home"
className="oracle.adf.controller.v2.struts.actions.DataActionMapping"
type="oracle.adf.controller.v2.struts.actions.DataForwardAction"
name="DataForm" parameter="/index.jsp" unknown="true">
...
</action>
同様に、次のような10.1.2の典型的なDataActionの<action>
定義があるとします。
<action path="/home"
className="oracle.adf.controller.struts.actions.DataActionMapping"
type="oracle.adf.controller.struts.actions.DataAction"
name="DataForm" unknown="true">
...
</action>
これは、次のように移行されます。
<action path="/home"
className="oracle.adf.controller.v2.struts.actions.DataActionMapping"
type="oracle.adf.controller.v2.struts.actions.DataAction"
name="DataForm" unknown="true">
...
</action>
次のような、カスタムDataPageクラスに基づく10.1.2の典型的な<action>
定義があるとします。
<action path="/departments"
className="oracle.adf.controller.struts.actions.DataActionMapping"
type="somecompany.someapp.CustomDataAction"
paramter="/todo.jsp" name="DataForm">
</action>
これは、次のように移行されます。
<action path="/departments"
className="oracle.adf.controller.v2.struts.actions.DataActionMapping"
type="oracle.adf.controller.v2.struts.actions.DataForwardAction"
name="DataForm" paramter="/todo.jsp" unknown="false">
<set-property property="v1ActionClass" value="somecompany.someapp.CustomDataAction"/>
</action>
ADF10.1.3(v2)ランタイムは、10.1.2(v1)ライフサイクルを使用してこのDataPageを実行します。
type
属性に指定したクラスがStrutsアクション・クラスから直接導出されているアクション、およびclassName
属性にADFクラス名(oracle.adf.controller.struts.actions.DataActionMapping
)を使用しているアクションは、移行されません。
次のような、カスタムDataPageクラスに基づく10.1.2の典型的な<action>
定義があるとします。
<action path="/departments"
className="oracle.adf.controller.struts.actions.DataActionMapping"
type="somecompany.someapp.CustomDataAction"
name="DataForm">
</action>
これは、次のように移行されます。
<action path="/departments"
className="oracle.adf.controller.v2.struts.actions.DataActionMapping"
type="oracle.adf.controller.v2.struts.actions.DataAction"
name="DataForm" unknown="false">
<set-property property="v1ActionClass" value="somecompany.someapp.CustomDataAction"/>
</action>
ADF10.1.3(v2)ランタイムは、10.1.2(v1)ライフサイクルを使用してこのDataActionを実行します。
type
属性に指定したクラスがStrutsアクション・クラスから直接導出されているアクション、およびclassName
属性にADFクラス名(oracle.adf.controller.struts.actions.DataActionMapping
)を使用しているアクションは、移行されません。
ADF 10.1.2(v1)のStruts構成ファイル(struts-config.xml
)に、次のようなメタデータがあるとします。
<action path="/department"
className="oracle.adf.controller.struts.actions.DataActionMapping"
type="oracle.adf.controller.struts.actions.DataForwardAction"
name="DataForm"
parameter="/department.jsp"
unknown="false">
<set-property property="methodName" value="departmentUIModel.setCurrentRowWithKeyValue1"/>
<set-property property="resultLocation" value="${requestScope.methodResult}"/>
<set-property property="numParams" value="1"/>
<set-property property="paramNames[0]" value="${param.department}"/>
</action>
これは、次のように移行されます。
<action path="/department"
className="oracle.adf.controller.v2.struts.actions.DataActionMapping"
type="oracle.adf.controller.v2.struts.actions.DataForwardAction"
name="DataForm"
parameter="/department.jsp"
unknown="false">
</action>
さらに、ページ(pageName
PageDef.xml
)のページ定義ファイルには、アクションに対して次のエントリが追加されます。
<pageDefinition id=departmentUIModel>
<parameters>
<parameter id="setCurrentRowWithKeyValue1_param1" value="${param.department}"/>
</parameters>
<executables>
...
<invokeAction id="setCurrentRowWithKeyValue1Ref" Binds="setCurrentRowWithKeyValue1"
Refresh="prepareModel" RefreshCondition="${requestScope['/department'].execute}"/>
...
</executables>
<bindings>
...
<action id="setCurrentRowWithKeyValue1" IterBinding="DeptView1Iterator"
InstanceName="AppModuleDataControl.departmentUIModel"
DataControl="AppModuleDataControl" RequiresUpdateModel="false"
Action="98">
<NamedData NDName="rowKey"
NDValue="${bindings.setCurrentRowWithKeyValue1_param1}" NDType="java.lang.String"/>
</action>
</bindings>
</pageDefinition>
RefreshCondition="${requestScope['/department'].execute
は、下位互換性を維持する場合にのみ必要です。ユーザー独自のアプリケーションには使用しないでください。
ADF 10.1.2(v1)のStruts構成ファイル(struts-config.xml
)に、次のようなメタデータがあるとします。
<action path="/executeQuery"
className="oracle.adf.controller.struts.actions.DataActionMapping"
type="oracle.adf.controller.struts.actions.DataAction"
name="myFormBean">
<set-property property="modelReference" value="executeQueryUIModel"/>
<set-property property="methodName" value="executeQueryUIModel.setBindVars"/>
<set-property property="resultLocation" value="${requestScope.methodResult}"/>
<set-property property="numParams" value="2"/>
<set-property property="paramNames[0]" value="${param.salary}"/>
<set-property property="paramNames[1]" value="${param.deptno}"/>
<forward name="success" path="/searchResult.do"/>
</action>
この場合、struts-config.xml
のStrutsアクション(/executeQuery
)は、次のように移行されます。
<action path="/executeQuery"
className="oracle.adf.controller.v2.struts.actions.DataActionMapping"
type="oracle.adf.controller.v2.struts.actions.DataAction" name="myFormBean">
<forward name="success" path="/searchResult.do"/>
</action>
10.1.3のページ定義ファイルのexecuteQueryUIModel
は、次のように移行されます。
<pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel"
id="executeQueryUIModel" Package="view" FindMode="false"
EnableTokenValidation="true">
<parameters>
<parameter id="setBindVars_param_0" value="${param.salary}"/>
<parameter id="setBindVars_param_1" value="${param.deptno}"/>
</parameters>
<executables>
<invokeAction id="setBindVarsRef" Binds="setBindVars"
Refresh="prepareModel"/>
</executables>
<bindings>
<methodAction id="setBindVars" IterBinding="" RequiresUpdateModel="false"
DataControl="AppModuleDataControl"
InstanceName="AppModuleDataControl.dataProvider"
MethodName="setBindVars"
ReturnName="AppModuleDataControl.methodResults.AppModuleDataControl_dataProvider_setBindVars_result">
<NamedData NDName="Arg0" NDType="java.lang.Double" NDValue="${bindings.setBindVars_param_0}"/>
<NamedData NDName="Arg1" NDType="java.lang.Integer" NDValue="${bindings.setBindVars_param_1}"/>
</methodAction>
</bindings>
</pageDefinition>
10.1.2(v1)の設計時に作成されたDataFormフォームBean(ADF固有の暗黙的なBean)は、次のようにしてv1クラスを参照します。
<form-bean name="DataForm"
type="oracle.adf.controller.struts.forms.BindingContainerActionForm"/>
10.1.3への移行では、次のようにv2固有の実装クラスに移行されます。
<form-bean name="DataForm"
type="oracle.adf.controller.struts.v2.forms.BindingContainerActionForm"/>
10.1.2 ADF(v1)では、検証フォームは次のように定義されます。
<form-bean name="editEmployeesBean"
type="oracle.adf.controller.struts.forms.BindingContainerValidationForm"
className="oracle.adf.controller.struts.forms.BindingContainerValidationFormConfig">
<set-property property="modelReference" value="editEmployeesUIModel"/>
</form-bean>
10.1.3(v2)では、モデル参照プロパティがdatabinding.cpx
ファイルに格納されているため、このプロパティは不要です。したがって、className
プロパティで定義された特別な構成ファイルも必要ありません。定義は、次のように移行されます。
<form-bean name="editEmployeesBean"
type="oracle.adf.controller.v2.struts.forms.BindingContainerValidationForm" />
</form-beans>
10.1.2から10.1.3への移行では、JSPファイルを対応するモデルに関連付けるために、modelReference
プロパティがStruts構成ファイル(struts-config.xml
)からdatabinding.cpx
ファイルに移されます。
たとえば、10.1.2のStruts構成ファイル(struts-config.xml
)に、次のようなアクションがあるとします。
<action path="/department"
className="oracle.adf.controller.struts.actions.DataActionMapping"
type="oracle.adf.controller.struts.actions.DataForwardAction"
name="DataForm"
parameter="/department.jsp"
unknown="false">
<set-property property="modelReference" value="departmentUIModel"/>
</action>
これは、次のように移行されます。
<action path="/department"
className="oracle.adf.controller.v2.struts.actions.DataActionMapping"
type="oracle.adf.controller.v2.struts.actions.DataForwardAction"
name="DataForm"
parameter="/department.jsp"
unknown="false"/>
databinding.cpx
ファイルは、次の内容が含まれるように更新されます。
<pageMap>
<page path="/department.do" usageId="departmentUIModel"/>
</pageMap>
<pageDefinitionUsages>
<!-- maps department DataAction to the view.departmentUIModel page definition -->
<page id="departmentUIModel" path="model.departmentUIModel"/>
</pageDefinitionUsages>
10.1.2アプリケーションが<plug-in>
要素を使用して独自のライフサイクル・クラスを指定する場合も、前述の各項で説明した移行手順が適用されます。
ADF 10.1.3(v2)ランタイムは、カスタム・ライフサイクル・クラスの存在を検出し、内部的に、10.1.2(v1)互換オブジェクトのみをカスタム・ライフサイクル・クラスのメソッドに渡します。
移行されたADF Strutsアプリケーションでは、resultLocation
set-propertyの使用は無視されます。
JDeveloper 10.1.2では、resultLocation
プロパティが使用され、${requestScope.methodResult}
にデフォルト設定されていました。アプリケーションには、カスタム式言語(EL)の位置が含まれている可能性があります。
10.1.3では、これらのメソッドの実行がADFコントローラ・レイヤーからADFモデル・レイヤーに移動しました。現在、メソッドは、EL式を使用して識別した位置に対する値のプッシュをサポートしていません。
次に例を示します。
<action path="/executeQuery"
className="oracle.adf.controller.struts.actions.DataActionMapping"
type="oracle.adf.controller.struts.actions.DataAction"
name="myFormBean">
<set-property property="modelReference" value="executeQueryUIModel"/>
<set-property property="methodName" value="executeQueryUIModel.setBindVars"/>
<set-property property="resultLocation" value="${requestScope.methodResult}"/>
<set-property property="numParams" value="2"/>
<set-property property="paramNames[0]" value="${param.salary}"/>
<set-property property="paramNames[1]" value="${param.deptno}"/>
<forward name="success" path="/searchResult.do"/>
</action>
移行時にこの機能が検出された場合は、StrutsアクションのresultLocationプロパティがすでに廃止されていること、およびアプリケーションのJSPで、${requestScope.methodResult}
への参照が機能していない可能性があることを説明するエントリがログに書き込まれます。
10.1.2から移行した後にStrutsページ・フロー・ダイアグラムを表示すると、ページ・リンクが予想どおりに表示されません。全ページからダイアグラムをリフレッシュすると、ページ・リンクが表示されます。
StrutsアプリケーションおよびJDeveloperについて
Copyright © 1997, 2006, Oracle. All rights reserved.