校验用户输入

学习目标

  • 帮助用户发现其输入是否正确。

用户输入校验

当用户通过在对象页面上选择 Edit 按钮创建新的业务对象项或更改现有项时,系统会创建一个草稿,并在后台自动保存。草稿每次更新后,页脚中都会显示消息 Draft updated。允许在草稿仍不完整且不一致时更新草稿。为了激活草稿(即将草稿保存为活动文档),输入应保持一致。为此,可以执行各种不同的校验检查。

有关草稿处理的更多信息,请参见 Draft Handling

客户端校验

顾名思义,客户端校验在前端执行,并在焦点离开输入字段后立即完成并可视化呈现。例如,用户可能输入了错误的日期格式,或输入的字符数超过了字段长度所允许的数量。该字段会被标记为红色,并且对象页面页脚(左下角)会出现一个消息按钮。它显示错误数量,选择它会打开一个消息浮出框并显示这些消息。只要错误未被更正,这些消息就会一直显示。

消息浮出框中显示的客户端错误消息

您也可以导航到相应的字段,并在那里看到相同的错误消息。

End Date 字段中显示的错误消息

后端校验

其他输入一致性检查可能需要在后端进行一些校验。通常,这类校验在用户选择对象页面上的 Save 按钮(相应地,子对象页面上的 Apply 按钮)时触发。

应用程序负责在后端准备此类一致性检查。

例如,CAP 运行时会自动校验与标注了 @assert.integrity@assert.target 及其他注解的属性相对应的字段中的用户输入。有关支持的输入校验注解的完整列表,请查看 CAP 文档 Input Validation

SAP Fiori elements 会自动显示后端作为请求-响应周期的一部分发送的消息。子项的消息也会显示。

涉及实例状态的消息(例如输入一致性检查)称为状态消息。它们在编辑模式下显示在对象页面和子对象页面上,与客户端校验消息位于同一个浮出框中。只要不一致未被更正,这些消息就会一直显示在 UI 上。状态消息可以持久化在后端。

为完整起见,我们还必须提到也可以从后端发送的转换消息。

它们在本质上是“瞬态的”,不会影响对象的状态。它们仅涉及最后执行的操作。这些消息与用户输入校验无关。这些消息可以显示在列表报表或显示模式下的对象页面中。有关更多信息,请参见 Using Messages

有关使用 CAP 进行用户输入校验的更多注解,请参见 Common Annotations

在对象页面上为 Agency 字段添加校验

使用场景

Manage Travels 应用中,您想要防止用户添加错误的代理机构名称。为此,您想要添加一个校验,使得每当用户尝试保存代理机构名称在数据库中不存在的差旅条目时,都会显示一个错误。

任务流程

在本练习中,您将添加一个注解,用于校验 Agency 字段的用户输入。

在 CAP CDS 数据模型中,to_AgencyTravel 实体中指向 TravelAgency 实体的托管一对一关联。因此,在 CreateEdit 事件期间,会针对 to_Agency 触发 CAP 校验。用 UI 的术语来说,就是用户在对象页面上选择 Save 保存差旅条目的时候。

前提条件

您已完成单元 Applying Dynamic Field Control and Validating User Input on the Object Page(课程:Dynamically Affecting the Visibility and Editability of UI Elements)中的练习 Hide the Starting Date and End Date for Travels with the Canceled Travel Status。或者,您可以检出其解决方案分支:solution/hide-starting-and-end-dates-for-canceled-travels

观看模拟和/或执行步骤

本练习提供了一个模拟,引导您完成下面的步骤列表。执行这些步骤可以让您在试用账户中跟随该模拟操作。

ExerciseStart Exercise(SAP 官方交互式练习)

步骤

  1. 在 SAP Business Application Studio 中打开您的 CAP 项目。

  2. Explorer 视图中,于 Projects 下选择 *db/data/schema.cds*

  3. 打开 schema.cds 文件。

  4. Travel 实体中,为 to_Agency 添加 @assert.target 注解。 它是指向 TravelAgency 实体的托管一对一关联。该注解检查 Agency 字段的用户输入在 TravelAgency 实体的关联或引用目标表中是否有对应的条目。

  5. 执行以下步骤进行检查。

  6. 打开 Manage Travels 应用。

  7. 单击 Edit

  8. Agency 字段中输入一个值。该值在参考表中必须不存在。

  9. 单击 Save

结果

由于 Agency 字段中输入的值不正确,您无法保存该文档。

注意

  • 您可以在 GitHub 上找到本练习的项目文件。

  • 解决方案分支是 solution/add-validation-for-field-agency-on-op 。

  • 您可以在 GitHub 上找到该分支与前一个分支的直接比较链接。