【问题标题】:Setting the APP_USER as a value to be passed to target page in APEX将 APP_USER 设置为要传递到 APEX 中目标页面的值
【发布时间】:2011-11-16 07:46:06
【问题描述】:

我正在 Apex 上制作学生管理系统。它的简称是讲师和学生可以登录的地方。讲师创建作业、分配、标记、考勤、记录问题......所有这些,学生登录以查看他们的出勤和结果。

现在,当学生单击“我的结果”链接时,它会导航到讲师看到的同一页面,但选择学生查看结果的选择列表是隐藏的。选择列表显示学生姓名并返回该学生的 id,这也恰好是学生登录的用户名。

所以我想在学生点击链接时传递 app-user 的值,以便只显示他们的结果。

我试过设置

these items
:P10_SELECT_STUDENT
with these values
#APP_USER#

有效,但没有显示“未找到数据”消息。

只是为了测试,我设置了要为学生显示的选择列表,当页面加载时,它会在列表顶部加载 null

display value
select a student
return value
-1

我已经手动将传递的值设置为测试学生的 id。工作很愉快,该学生的数据加载!

那么有谁知道为什么我发送的#APP_USSER# 值没有在列表框中设置

提前致谢

【问题讨论】:

    标签: parameter-passing oracle-apex


    【解决方案1】:

    您需要的是 APP_USER 变量的会话状态。在查询中,您可以使用:APP_USER 引用它。当您需要将值作为参数传递时,例如,链接,您将使用替换字符串表示法&APP_USER.,这与引用任何其他变量/页面项的方式非常相似。

    例如,设置一个按钮:

    阅读替换字符串的好页面:Application Builder Concepts

    哈希符号表示法通常用于非plsql变量替换,例如在链接中传递时报告中列的值,

    【讨论】:

    • 我只是将值更改为 :APP_USER 并将列表框设置为空值,即 -1。
    • 好的,等一下:您的选择是基于学生的 ID。这个 id 是数字,还是实际上是用户名,就像您在登录后看到的那样显示在每个页面的底部?
    • 它是数字,登录后页面上会显示相同的数字
    • 哦-我想我理解你有点错误:因为你通过这样的链接传递 app_user,你需要使用 &APP_USER。如果您使用 :APP_USER 进行传递,它不会停留在您的重定向设置中。这是因为您希望将值作为字符串(替换字符串)传递,而不是作为变量传递。只要 app_user 值等于选择列表的“返回值”,这应该可以工作。
    • 不幸的是,网址现在显示:P10_SELECT_STUDENT:%26APP_USER 时单击并在该区域收到此错误:报告错误:ORA-01722:无效号码
    【解决方案2】:

    扎克,

    如果用户尚未验证自己,则 :APP_USER 参数为空。如果用户通过 SSO、DB 凭据或您在应用程序中拥有的任何内容进行身份验证,则 :APP_USER 将被填充。

    这是我的理解: 在第 12 页中,P12_STUDENTS 是一个选择列表,如果他进入,您希望它反映当前学生,如果他是老师,您希望它反映完整列表吗?

    您不需要通过链接或分支或其他方式传递 :APP_USER。它作为全局 Apex 变量存在,并通过 :APP_USER 在第 12 页可见,但同样,如果用户未通过身份验证,则为 null。

    您的选择列表来源应类似于:

     select display d,  return r
      from table
      where (:APP_USER is NULL
            OR (:APP_USER IS NOT NULL AND :APP_USER = student))
    

    告诉我这是否有帮助?

    问候,

    亚历克斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 2013-05-30
      • 2021-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 2020-10-26
      相关资源
      最近更新 更多