1

友達、

私はAPEXで別の課題に直面しています。あなたが助けてくれることを願っています。

John&Scottのすばらしい本「ProApplication Express」で説明されている方法を使用してツリーを作成しました。この方法では、ページリンクがテーブルに格納されます。以下に例を示します。

go to a page passing some parameters

f?p=&APP_ID.:3:&SESSION.::::P3_IDENTIFIER,P3_FAMILY_NAME:&P2_IDENTIFIER.,&P2_FAMILY_NAME.

ページが実行されると、これは期待どおりに機能します。ツリーを展開して、必要に応じてパラメータを渡すページに移動できます。

ただし、セッション状態保護をオンにすると、これらの「手作り」リンクが機能しなくなりました。リンクにチェックサムが含まれていないので、これを期待しました。

調査の結果、APEX_UTIL.PREPARE_URLを使用してチェックサム付きのURLを生成する必要があることがわかりました。残念ながら、これは私が問題にぶつかるところです。パラメータ値を呼び出し元のページに渡すことができないようです。

元のツリークエリは次のとおりです。

select "IDENTIFIER" id,
"PARENT_IDENTIFIER" pid,
"TITLE" name,
"LINK" link,
null a1,
null a2
from <some table>

次に、これをAPEX_UTIL.PREPARE_URLを使用するように変更しました。

....
APEX_UTIL.PREPARE_URL('f?p='||:APP_ID||':3:'||:APP_SESSION||'::::P3_IDENTIFIER,P3_FAMILY_NAME:&P2_IDENTIFIER.,&P2_FAMILY_NAME.') link,
...

これが機能すると、ページが呼び出され、渡されたパラメーターの値を確認できます。ただし、この方法は1ページに制限されているため、使用できません。

最後に、ツリーの基になっているテーブルのさまざまな列にページ番号、パラメーター、およびパラメーター値を格納してから、それらをまとめてみました。

...
APEX_UTIL.PREPARE_URL('f?p='||:APP_ID||':'||navigate_to_page||':'||:APP_SESSION||'::::'||parameters||':'||parameter_values) link,
...

Where: 

navigate to page has the value of: 3
parameters has the value of: P3_IDENTIFIER,P3_FAMILY_NAME
parameter_values has the values of: &P2_IDENTIFIER.,&P2_FAMILY_NAME.

これでページが呼び出されますが、パラメータ値はリテラルになっています。したがって、識別子を期待している場合は、&P2_IDENTIFIERと同上で家系の名前が表示されます。

私は何が間違っているのですか?apex_util_prepare_urlを使用して、呼び出されたページに値を渡すにはどうすればよいですか?

必要に応じて、私の環境の詳細は次のとおりです。Apex 3.2.1、Oracle ApplicationServer10.1.2.3。Oracle Database 10.2.0.3

あなたが提供できるかもしれないどんな助けにも前もって感謝します。

4

1 に答える 1

1

v()関数を使用して、これらの変数を解決する必要があると思います。

APEX_UTIL.PREPARE_URL('f?p='||:APP_ID
||':'||navigate_to_page
||':'||:APP_SESSION
||'::::'||parameters
||':'||v('P2_IDENTIFIER')||','||v('P2_FAMILY_NAME')) link,

P2_FAMILY_NAMEちなみに、URLで使用されているため、注意が必要な場合があります。ユーザーが入力したデータを含むプレーンテキストフィールドのように聞こえますか?

于 2009-12-21T11:00:46.890 に答える