2013-04-23 52 views
1

是否有可能使用plsql获取默认项目值?我有一个验证,并在它失败的情况下,我想重置项目的默认值。 我尝试过使用apex_util.set_session_state('P_ITEM_NAME', null),但没有任何明显的效果。apex检索默认项目值

如何检索默认项目或重置项目本身?

回答

0

:P_ITEM_NAME := null;

这里的区别是 “:” 项目的盈方。像这样使用它可以访问该项目。我相信不需要使用撇号。

如果这不适用于您的版本,请不要使用;。

所以,你可以使用:

:P_ITEM_NAME 

来获取值。

+0

由于'set_session_state'接受项目的varchar2'名称,因此撇号是必需的。从验证器函数调用'set_session_state'没有用,因为它看起来会话状态和项目值是相同的,如果我清除会话状态项值也被清除。我有这样的请求范围。我找到了一个解决方案,但相当丑陋。 – 2013-04-23 18:47:07

0

我找不到任何函数会返回使用项目的默认值。不过,我可以使用默认项目设置来模仿这一点。当页面出现验证错误时,页面进程不运行,因此我添加了条件页面进程,与我的验证执行相同的检查,当这些检查指示验证失败时,它只是清除项目状态。

这很丑陋,因为它需要复制检查,而且似乎有必要通过所有需要此类重置机制的页面复制几乎相同的页面控件。

2

创建页面进程时,会出现一个名为“显示内联验证错误”的情况,这可能会有所帮助吗?在此过程中,您可以将项目重置为空,然后当页面加载时,项目值将返回到其默认值。

UPD:

创建过程:

  • 过程点:在负荷前头部

  • 条件:内嵌验证错误显示

  • 流程源:

    begin 
        for i in (
        select t.ITEM_DEFAULT, t.item_name 
        from apex_application_page_items t 
        where t.application_id = :APP_ID 
         and t.page_id = :APP_PAGE_ID 
    ) loop 
        apex_util.set_session_state(i.item_name, i.item_default); 
        end loop; 
    end; 
    

这会将所有页面项目恢复为默认值。 这个解决方案有些难看,但我不知道这个问题的另一个解决方案。

+0

但是当页面有验证错误时,进程不运行。 – 2013-04-24 18:00:46

+0

寻找更新 – NoGotnu 2013-04-25 07:15:35