Oracle apex Oracle Apex在移动到另一页之前设置值,所有项都为空

Oracle apex Oracle Apex在移动到另一页之前设置值,所有项都为空,oracle-apex,session-state,oracle-apex-5,Oracle Apex,Session State,Oracle Apex 5,我正在尝试执行以下操作: 具有唯一密钥的匿名用户输入代码并单击“开始调查” 该按钮需要调用plsql进程来填充一些隐藏的页面项 设置值后,将分支到调查页面,该页面将使用隐藏项筛选结果 问题 无论到目前为止我尝试了什么,当我进入下一页时,流程设置的项目都是空的。我想这是因为它没有提交。我目前的做法是: 按钮导航到下一页 按下按钮时设置为的新进程将设置页面项目的值 当它进入下一页时,它们又是空白的 我可以将按钮设置为submit并在处理过程中执行分支,但我认为submit将在设置值之前进行。

我正在尝试执行以下操作:

  • 具有唯一密钥的匿名用户输入代码并单击“开始调查”
  • 该按钮需要调用plsql进程来填充一些隐藏的页面项
  • 设置值后,将分支到调查页面,该页面将使用隐藏项筛选结果
问题

无论到目前为止我尝试了什么,当我进入下一页时,流程设置的项目都是空的。我想这是因为它没有提交。我目前的做法是:

  • 按钮导航到下一页
  • 按下按钮时设置为的新进程将设置页面项目的值
当它进入下一页时,它们又是空白的

我可以将按钮设置为submit并在处理过程中执行分支,但我认为submit将在设置值之前进行。我发现这些事情发生的顺序很混乱

我可以得到帮助,使这项工作,并有一个很好的文章,了解这方面更好吗

以下是将值放入的过程中的代码:

开始
将id选择为:P1_pat_id
来自lic_参与者
其中unique_id=:P1_unique_代码;
将sur\u id选择为:P1\u sur\u id
来自lic_参与者
其中unique_id=:P1_unique_代码;
将id选择为:P1\u first\u res\u id
从lic_结果r
其中r.pat_id=:P1_pat_id
和r.sur_id=:P1_sur_id
并且r.qop_id为空
rownum=1;

结束除非当前页面是全局页面,否则当前页面中的隐藏页面项不能用于其他页面。您必须将该值传递给另一页中的另一页项

试试这个:

  • 转到另一页并创建隐藏项以捕获要从第一页传递的值

  • 返回第一页,保留流程并创建分支流程。然后将其设置为重定向到另一个页面。然后您将看到下面的设置项。将隐藏项放在另一页的左侧,然后将当前页中的隐藏项放在右侧,格式如下&P1\u NEW.(带句点)

应该是这样的

设置项目

P11_PAT_ID--------------------和P1_PAT_ID


P11\u SUR\u ID--------------------和P1\u SUR\u ID


等等。

好的,我解决了它,是我玩弄了另一个问题才解决了它。 我已经将隐藏字段设置为“始终替换”,而不是“仅当为null时”,因此plsql进程更新了会话,但没有更新项目。因此,当我提交时,null项目替换了plsql进程设置的内容。我原以为,当会议更新时,它也会更新该项目。 我将隐藏字段设置为可见,可以看到它为空,但在检查会话状态时有一个值


您可以发布填充隐藏页面项目的流程吗?只需确保填充的页面项目正确即可。如果您正在填充另一个页面的页面项,那么这就是代码的问题所在。我已将其添加到上述问题中,流程在第1页填充了三个项目,流程在第1页。那么您如何在另一页筛选报告?只需将其添加到where子句,即where ID=:P1_first\u resu_ID对不起,我的意思是where ID=:P1_first\u res_ID您能进一步解释一下这句话吗“除非当前页面是全局页面,否则当前页面中的隐藏页面项不能用于其他页面。您必须将该值传递给另一页中的另一页项。“我以前从页面上的隐藏项中筛选了where子句中的报告,因此我不确定这是否正确。实际上,它不仅是隐藏的,所有页面项只能由同一页面独占使用。我并没有说你不能使用隐藏项来过滤报告,我说如果该项是从另一个页面创建的,而你试图在另一个页面中使用它,那么你将不会得到任何结果。例如,您在筛选第11页中的报告时使用了P1_NEW。除非您在第11页上有一个名为P1_NEW的项目,否则当您提交流程时,第11页将只提交其页面上存在的所有项目。我一直从其他页面引用和设置页面项目,它可以正常工作。您的意思是什么“它不仅仅是隐藏的,所有页面项目只能由同一页面独占使用“好吧,我现在明白了为什么它对你有用了。它在会话中隐式存储页面项的值,因为您在“提交”按钮后将分支到另一个页面。但是,最好是显式传递该值,以避免将来出现复杂或不一致的行为。只是说说而已。虽然你关于避免在一个页面上使用另一个页面的项目时产生混淆是正确的,但你的陈述措词不正确。当发生提交或通过服务器端通信设置页面项时,页面项将其值存储在会话状态中。有时它很方便——例如:一个类似向导的页面设置,在最后一步,您将前几页中项目的值放入存储过程中。你应该给你的答案增加细微差别!