У меня есть элемент страницы P2_ITEM_TYPE_ID
, который устанавливается в Pre-Render с использованием процесса, вызывающего 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;
В настоящее время запись для этого ITEM_ID не существует в TABLE1, поэтому исключениеNO_DATA_FOUND выбрасывается, и изначально ITEM_TYPE_ID имеет значение null.
Теперь я хочу установить ITEM_TYPE_ID, щелкнув одну из карточек на странице, захватив ее идентификатор и установив элемент страницы P2_ITEM_TYPE_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'} );
Я знаю, что код работает, так как правильные значения выводятся на консоль, но когда я проверяю сеансстраницы, P2_ITEM_TYPE_ID пуст в сеансе.В чем может быть проблема?
Это похоже на то, как будто что-то мешает изменить это значение.У меня есть идентичные настройки на другой странице с одним небольшим отличием - код в предварительном рендеринге не включает в себя часть исключения, потому что для TEMLE1 всегда есть запись для этого 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 изменяется без проблем