SAP CAP篇十:理解Fiori UI的Annoation定义

这篇具有很好参考价值的文章主要介绍了SAP CAP篇十:理解Fiori UI的Annoation定义。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本系列文章

SAP CAP篇一: 快速创建一个Service,基于Java的实现
SAP CAP篇二:为Service加上数据库支持
SAP CAP篇三:定义Model
SAP CAP篇四:为CAP添加Fiori Elements程序(1)
SAP CAP篇五:为CAP添加Fiori Elements程序(2)
SAP CAP篇六:为CAP添加Fiori Elements程序(3)
SAP CAP篇七:为CAP添加Fiori Launchpad入口 (Sandbox环境)
SAP CAP篇八:为CAP添加App Router并支持Fiori Launchpad (Sandbox环境)
SAP CAP篇九:升级为SAP CDS 7.0, CAP Java 2以及Spring Boot 3
SAP CAP篇十:理解Fiori UI的Annoation定义
SAP CAP篇十一:支持Media Object:图片、附件等
SAP CAP篇十二:AppRouter 深入研究

官方文档和基础概念

官方文档中当然包含了Fiori UI的部分,不过要弄懂整个概念,也得先从OData的部分开始看起。

一切从根源说起:

  • 不论是SAP CAP还是SAP RAP,其实都拓展了OData的定义。
  • OData的设计初衷是格式化REST风格的API,通过$metadata, $count, $filter, $select等定义规范了POST/GET等一系列操作;
  • SAP CDS Annotation其实是在OData的metadata中添加了额外的为了UI(其实这里特指Fiori UI)定义的内容,用来规范Fiori UI程序的组成。
  • SAP CDS Annotation的设计理念应该是,最大简化界面层面的开发,甚至可以不写一行界面代码的方式生成标准、统一的前台程序。

SAP CAP对Fiori UI的支持

理解了上述的基础概念,下面就基于前面几篇的项目,研究下SAP CAP对Fiori UI是如何通过Annotation实现的。

package.json的新增内容

在SAP CAP篇四:为CAP添加Fiori Elements程序(1) 为项目添加Fiori Elements程序时,其实Application Generator自动在项目的package.json文件中添加了如下依赖:

  "devDependencies": {
    "@sap/ux-specification": "^1.102.23"
  }

除了添加的依赖之外,还有如下额外的部分:

  "sapux": [
    "app/manage-books",
    "app/browse-books"
  ],

这里每条新增的项目就对应每个新添加的Fiori Elements。

Annotation定义

上述package.json只是让编译器知道在编译时查找Annotation定义,以输出Annotation相关的定义为Metadata。

Annotation定义则是保存在对应的Annotation CDS文件中。具体来说,在本例中,对应的Annotation定义存放在fiori-service.cds中。

本篇没法具体介绍所有的Annotation,仅使用最常用的List Page来进行说明。

List Page

SAP CAP篇十:理解Fiori UI的Annoation定义,Spring Boot,ABAP/SAP,Web Programming,SAP CAP,SAP CDS,Fiori Elements,SAP BTP,Cloud Native

List Page由上面的Filter Bar加Table构成。

  • 前者由UI.SelectionFields定义。
  • 后者由UI.LineItem来定义。这里定义的LineItem其实是定义Table中的Column。
annotate service.Books with @(
    UI.SelectionFields: [ ID, title, descr ],
    UI.LineItem : [
        {
            $Type : 'UI.DataField',
            Value : title,
        },
        {
            $Type : 'UI.DataField',
            Value : descr,
        },
        {
            $Type : 'UI.DataField',
            Value : stock,
        },
        {
            $Type : 'UI.DataField',
            Value : price,
        },
        {
            $Type : 'UI.DataField',
            Value : currency_code,
        },
        {
            $Type: 'UI.DataField',
            Value: category_ID
        }
    ]
);

生成的Edmx文件

与SAP CAP Node.js版本不同,SAP CAP Java项目只能通过生成的edmx文件来查看上述Annotation。

参见项目 srv\src\main\resources\edmx文件夹,通常其中有很多xml文件,文件命名中指定了相关的语言版本。

      <Annotations Target="AdminService.Books">
        <Annotation Term="UI.SelectionFields">
          <Collection>
            <PropertyPath>ID</PropertyPath>
            <PropertyPath>title</PropertyPath>
            <PropertyPath>descr</PropertyPath>
          </Collection>
        </Annotation>
        <Annotation Term="UI.LineItem">
          <Collection>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="title"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="descr"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="stock"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="price"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="currency_code"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="category_ID"/>
            </Record>
          </Collection>
        </Annotation>

对应代码及branch

与本文配套的代码参见这里。

本篇对应的branch是6_cds7文章来源地址https://www.toymoban.com/news/detail-563937.html

到了这里,关于SAP CAP篇十:理解Fiori UI的Annoation定义的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SAP Fiori开发中的JavaScript基础知识15 - 原型,object,constructor,class,继承

    本文将介绍JavaScript中的核心概念 - 原型,并会介绍基于原型的应用场景object,constructor,class,继承。 本文会将这几个核心概念汇总在一篇博客中,因为这些概念是触类旁通的,希望对你有帮助。 在JavaScript中,几乎所有的东西都是对象,每个对象都有一个 特殊的内部属性

    2024年04月23日
    浏览(66)
  • SAP CAP篇二:为Service加上数据库支持

    在篇一快速创建一个Service,基于Java的实现中,可见使用SAP CAP (Cloud Programming Model)确实可以提高开发效率。尤其是Java技术栈上,对比于之前使用Olingo框架来实现oData,使用SAP CAP真的可以做到指数级别的效率提升。 当然,篇一中介绍的Service只使用了内存来存储和读取数据。

    2023年04月22日
    浏览(35)
  • 【Spring Boot】(三)深入理解 Spring Boot 日志

    在现代软件开发中, 日志是一项至关重要的工具,它记录了应用程序运行过程中的关键信息,当程序运行出现错误的时候,可以帮助开发人员快速识别和解决存在的问题 。通过合理的日志记录,能够帮助我们更好地了解应用程序的运行情况,从而提高应用程序的稳定性和可

    2024年02月14日
    浏览(33)
  • 【Spring Boot】Spring Boot的系统配置 — 自定义配置项

    本节将介绍Spring Boot实现自定义配置项(也称为配置属性)。在项目开发的过程中,经常需要自定义系统业务方面的配置文件及配置项,Spring Boot如何实现自定义属性配置呢?其实非常简单,Spring Boot提供了**@Value注解**、 @ConfigurationProperties注解 和 Environment接口 等3种方式自定

    2024年02月16日
    浏览(28)
  • 深入理解 Spring Boot 的 ApplicationRunner 接口

    在 Spring Boot 应用程序启动时,有时我们需要执行一些特定的任务。Spring Boot 提供了 ApplicationRunner 接口,允许我们在应用程序完全启动后执行自定义的逻辑。本文将深入介绍 ApplicationRunner 接口,以及如何通过它来实现应用程序启动后的任务。 初始化逻辑: 在应用程序启动时

    2024年04月22日
    浏览(39)
  • 46、如何理解Spring Boot中的Starter

    使用spring + springmvc,如果需要引入mybatis等框架,需要到xml中定义mybatis需要的bean starter就是定义一个starter的iar包,写一个@Configuration配置类、将这些bean定义在里面,然后在starter包的META-INF/spring.factories中写入该配置类,springboot会按照约定来加载该配置类 开发人员只需要将相应

    2024年02月16日
    浏览(33)
  • “深入理解Spring Boot:从入门到精通“

    标题:深入理解Spring Boot:从入门到精通 摘要:本文将深入探讨Spring Boot的核心概念和使用技巧,帮助读者从入门到精通Spring Boot开发。通过具体的示例代码,介绍Spring Boot的特点、优势以及常见的使用场景,同时提供一些实用的开发技巧和调试方法,以帮助读者更好地理解和

    2024年02月15日
    浏览(30)
  • 初级 - 若依框架 - Java Spring/Spring Boot 项目理解记录

    一般情况下,我们创建对象都是 类名 + 类引用名 = new 类名() 但是如果是不想要 等于号后面的对象实例化操作,那么可以使用 @Autowired 注解,当然这是在使用 Spring 时,才能这样,不然一般情况下,也没法用这个注解。用了这个 @Autowired 注解,会让 Spring 自动帮你托管这个对象

    2024年02月16日
    浏览(36)
  • 深入理解 Spring Boot 内置工具类:ReflectionUtils

    🎉欢迎来到架构设计专栏~深入理解 Spring Boot 内置工具类:ReflectionUtils ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:架构设计 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹文章作者技术和水平有限

    2024年02月20日
    浏览(34)
  • Spring boot自定义注解

    定义一个注解类 使用AOP对注解进行解析,需要定义一个切面类,包括自定义的切点方法normalPointCut(),以及连接点的处理方法normalPointAround()。连接点中的ProceedingJoinPoint可以获取被代理类的方法属性等。 2.1 定义注解 2.2 实现参数解释器 记得实现WebMvcConfigurer 接口配置LimitReque

    2023年04月27日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包