为多个类似的页面项目实现可重用的APEX表单验证定义

时间:2014-07-24 16:10:18

标签: oracle validation oracle-apex

我目前正在使用APEX 4.0。我想进行一个适用于表单中多个字段的验证。例如,我希望特定字段仅接受YN,并且必须为大写字母。截至目前,我对每个字段进行了一次验证。有没有办法进行适用于所有这些字段的单一验证?

1 个答案:

答案 0 :(得分:1)

在Oracle Application Express(APEX)中创建可重复使用的表单验证

  

此解决方案是在Oracle OTN(apex.oracle.com)上托管的Apex实例上开发的。此实例当前位于版本4.2.5 ,但此解决方案中讨论的设计元素仍应与4.0.0和4.2.5版本兼容。

表单设计的方法不一定是在表单完成并提交后通过验证步骤捕获异常。

  

相反,只需考虑限制用户可以在输入中选择的选项,并控制输入作为数据表更改提交后的解释方式。

通过定义限制值选择进行预验证

以下是定义为"共享组件"的OP要求的示例。通过" Application Builder"菜单。使用静态定义创建命名的 LOV(值列表)。在这里,您可以定义以下值对:

  1. DISPLAY,这是您希望用户看到的任何用户友好的内容。即使YN非常明显,也可以探索其他选项,例如拼写出来(例如:YES)或将实际值与显示结合(例如:{ {1}})。
  2. Y (Yes),您可以在其中强制执行数据库中的操作。在这种情况下,OP要求中提到的大写单字符值将在此处。
  3. 这就是LOV定义的样子:

    APEX LOV(值列表)设计屏幕 Oracle APEX LOV for limiting user selections

    消除自由格式数据表单项显示类型

    遵循限制LOV的初始概念,将所有表单项转换为使用显示类型,使用"值列表"定义指向您的"共享组件" (或命名为LOV )。

    对需要相同输入规则的问题使用 SAME LOV定义。现在,用户无法更改OP定义之外的数据值,并且可以灵活地使用更具指导性/描述性的显示值,以便他们更有可能做出正确的选择。

    这是一个示例,说明具有相同输入数据类型的输入表单如何完成此任务而无需其他验证:

    具有可重复使用的输入限制规则的样本APEX表单设计 Sample APEX Input Form with Alternate Validation Styles

    在这个例子中,我尝试了一些表单项样式,包括

    1. 标准 文本框输入字段 。 (在没有将其与其他验证逻辑耦合的情况下出现问题)。
    2. 选择列表 条目的效果最佳。有关选择细节的更多说明,请参阅此解决方案末尾的讨论,例如指定"空字段值"。
    3. 广播组选择 按钮效果很好,因为它们提供了有效表单选择的可视布局,无需额外的向下钻取或滚动。
    4. 所有三个选项都使用相同的LOV定义。

      使用LOV强制限制的数据输入示例

      在尝试了不同类型的输入之后,根据情况或此OP或其他读者的更深层次要求,这里可能会有所帮助。

      1. RETURN VALUE应设置为DISPLAY EXTRA VALUES。这就是首先限制输入可能性的原因。
      2. 如果所有答案都需要回复,则
      3. NO最好为DISPLAY NULL VALUE。如果可以为NULL,则有一个有用的第三个(默认值)可用于其他用户友好性。
      4. LOV受限制表单中的示例数据输入和值 Sample Data Report for Inputs from LOV Restricted Form Items

        请注意,自由文本输入字段在没有其他形式的验证或检查的情况下会显示数据质量的其他问题。其他表单字段提供了通过目标数据库表反映的准确数据输入。

        一些结束意见和进一步研究的要点

        该解决方案仅是关于保护存储在数据库表中的信息的部分解决方案。许多其他系统,应用程序,程序,API等也可以访问更改或向此后端数据源添加数据的情况并不少见。

          

        如果另一组开发人员独立创建了一个api来管理同一个表中的数据怎么办?除非他们阅读OP的文档或检查已经存在的现有数据集,否则他们的项目团队可能没有设计准确的解释 这些规则,仅适用于此特定APEX应用程序。

        根据系统的易受攻击程度,应用相关的保护措施也是一种好习惯,例如 schema level table constraints(例如检查约束) Not Null 约束(如果适用)甚至 DEFAULT 值设置(由触发器或表默认值建立)。

        来自作者......

        同样,如果Apex应用程序的输入形式只提供两种选择,那么就不需要了解这个细节......" SOUP"或者" SALAD",不太可能" BACON-ORANGE-CHICKEN"将应用程序部署到用户后,将弹出表格。手中。

        这种设计方法会跳过服务器往返值I / O,因为用户已经知道初始页面加载事件菜单上的内容。

        尽管OP请求非常简单且通用(NOYYESN),但它为更复杂的输入筛选程序提供了有用的模式,甚至可以在提交数据之前发生。

        祝你好运! 向前。