R8.5.1への移行
最終更新日: 2020年7月30日
R8.3.8までは1リクエストで更新前と更新後が処理されていました。
更新画面に用意される "更新して次へ/前へ" ボタン押下時に呼び出されるスクリプトでは、対象モデルは次または前の画面へ遷移したあとが対象になります。
例えば主キー 1000,1001,1002 のモデル model1 があり、主キー1000の更新画面で "更新して次へ" ボタンを押下すると、スクリプト UpdateModel1_SUpdateNext.js が呼び出されます。このスクリプトで print(model1) とすると、主キー 1001 のモデルが対象となります。画面遷移後というルールです。
ここでスクリプトで画面遷移前(つまり主キー1000)の値を参照したい場合は、次のようにします。
接尾語 ".update" はこの "更新画面を開く" スクリプトでのみ利用できる特別な指定です。この接尾語を用いると、更新される前のオブジェクトを参照できます。
なお、ここで参照するオブジェクトはデータベースへの更新が終わった後の値です。このオブジェクトの値を変更することはできません。(値を変更してもデータベースには反映されません。)
R8.3.9/R8.5.1で、スクリプトの挙動が変わりました。R8.3.9以降の版からR8.5.1以降へ移行する場合、以下の内容は R8.3.9 と同じですので、読み飛ばしてください。
"更新して次へ/前へ" ボタン押下の画面遷移は、リダイレクト方式となっています。このため、スクリプトによって参照できるストアモデルが変わります。
ここで "更新画面を開く" スクリプトで画面遷移前(つまり主キー1000)の値を参照したい場合は、次のようにします。
接尾語 ".update" はこの "更新画面を開く" スクリプトでのみ利用できる特別な指定です。この接尾語を用いると、更新される前のオブジェクトを参照できます。
なお、ここで参照するオブジェクトはデータベースへの更新が終わった後の値です。このオブジェクトの値を変更することはできません。(値を変更してもデータベースには反映されません。)
"更新して次へ" "更新して前へ" スクリプトの挙動変更
R8.3.3-R8.3.6, R8.5.0
var smodel = p.request.getAttribute("model1.update");//ストアモデル
var pmodel = p.request.getAttribute("model1_p.update");//プレゼンテーションモデル
R8.3.9/R8.5.1以降
var smodel = p.request.getAttribute("model1.update");//ストアモデル
var pmodel = p.request.getAttribute("model1_p.update");//プレゼンテーションモデル