gpt4 book ai didi

Oracle APEX 无法将值保存到 session 中

转载 作者:行者123 更新时间:2023-12-02 09:10:11 28 4
gpt4 key购买 nike

我有一个页面项 P2_ITEM_TYPE_ID,它使用调用 PL/SQL 的进程在预渲染中设置:

BEGIN
select ITEM_TYPE_ID INTO :P2_ITEM_TYPE_ID from TABLE1 where ITEM_ID = :P2_ITEM_ID;
exception
when no_data_found then
:P2_ITEM_TYPE_ID := null;
END;

当前 TABLE1 中不存在该 ITEM_ID 的记录,因此抛出异常 NO_DATA_FOUND,并且最初将 ITEM_TYPE_ID 设置为 null。

现在我想设置 ITEM_TYPE_ID,方法是单击页面上的一张卡片,获取其 ID 并将页面项 P2_ITEM_TYPE_ID 设置为该 ID。

我有一个动态操作,当单击卡片时运行以下 JavaScript:

var $item_type_id = this.data;
console.log($item_type_id); //prints out correect ID
apex.item("P2_ITEM_TYPE_ID").setValue($item_type_id);
console.log(apex.item("P2_ITEM_TYPE_ID").getValue()); //prints out correct value

//set session state of P2_ITEM_TYPE_ID
apex.server.process ( "SAVE_HIDDEN_VALUE_IN_SESSION_STATE",
{
x01: $item_type_id,
pageItems: "#P2_ITEM_TYPE_ID"
},
{dataType: 'text'} );

我知道代码可以工作,因为正确的值会打印到控制台,但是当我检查页面的 session 时,P2_ITEM_TYPE_ID 在 session 中为空白。可能是什么问题?

就好像有什么东西阻止了值的改变。我在另一页上有相同的设置,但有一个小差异 - 预渲染中的代码不包括异常部分,因为 TABLE1 中始终有该 ITEM_ID 的记录:

BEGIN
select ITEM_TYPE_ID INTO :P3_ITEM_TYPE_ID from TABLE1 where ITEM_ID = :P3_ITEM_ID;
END;

但是代码的其余部分是相同的,P3_ITEM_TYPE_ID 的 session 更改没有问题

最佳答案

为此,您不需要 apex.server.process,您可以使用执行 PL/SQL 代码操作将项目的值发布到服务器,该操作遵循您已有的 javascript 操作。将项目名称(例如P2_ITEM_TYPE_ID)放入要提交的项目属性中(将PL/SQL代码设置为null;).

关于Oracle APEX 无法将值保存到 session 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53269800/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com