朋友,
我在Apex面临另一个挑战,我希望你能帮忙。
我使用John&Scott的绝妙著作“Pro Application 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,
...
这样就可以调用页面,我可以看到传递的参数值。但是我不能使用这个方法,因为它只限于一页!
最后,我尝试将页码、参数和参数值存储在树所基于的表的不同列中,然后将它们放在一起:
...
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_标识符,而姓氏也是如此。
我做错什么了?如何使用apex-util-prepare-url将值传递给被调用的页面?
如果需要,我的环境详细信息是:apex 3.2.1,Oracle Application Server 10.1.2.3。Oracle数据库10.2.0.3
提前感谢您提供的任何帮助。