SAP CAP篇六:为CAP添加Fiori Elements程序(3)

本系列文章

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 深入研究

本篇之前的运行效果

在完成 SAP CAP篇五:为CAP添加Fiori Elements程序(1) 的基础之上,执行:

mvn spring-boot:run

打开浏览器:
运行结果

修改pom.xml

继续增强程序。首先,修改在srv文件夹中的pom.xml

添加新的Dependency

添加新的Dependency:

<dependency>
	<groupId>com.sap.cds</groupId>
	<artifactId>cds-adapter-api</artifactId>
</dependency>

更新plugin

buildplugins下,修改下面这个plugin添加workingDirectory

<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
	<version>${spring.boot.version}</version>
	<configuration>
		<skip>false</skip>
		<!-- use project root directory as working directory to deliver fiori resources -->
		<workingDirectory>..</workingDirectory>
	</configuration>
	<executions>
		<execution>
			<id>repackage</id>
			<goals>
				<goal>repackage</goal>
			</goals>
			<configuration>
				<classifier>exec</classifier>
			</configuration>
		</execution>
	</executions>
</plugin>

添加新的Controller

创建index目录

Application.java所在的文件夹,添加index目录。

添加UiIndexContentProviderFactory.java

添加UiIndexContentProviderFactory.java文件夹:

package customer.demo_service.index;

import java.io.PrintWriter;
import com.sap.cds.adapter.IndexContentProvider;
import com.sap.cds.adapter.IndexContentProviderFactory;

/**
 * Explicitly adds links to UI resources provided by this application to the index page
 */
public class UiIndexContentProviderFactory implements IndexContentProviderFactory {

	@Override
	public IndexContentProvider create() {
		return new UiIndexContentProvider();
	}

	@Override
	public boolean isEnabled() {
		return true;
	}

	private static class UiIndexContentProvider implements IndexContentProvider {

		private static final String ENDPOINT_START = "" +
		"                <ul>\n";

		private static final String ENDPOINT = "" +
		"                    <li>\n" +
		"                        <a href=\"%s\">%s</a>\n" +
		"                    </li>\n";

		private static final String ENDPOINT_END = "" +
		"                </ul>\n";

		@Override
		public String getSectionTitle() {
			return "UI endpoints";
		}

		@Override
		public void writeContent(PrintWriter writer, String contextPath) {
			writer.print(ENDPOINT_START);
			writer.printf(ENDPOINT, contextPath + "/manage-books/webapp/index.html?sap-ui-xx-viewCache=false", "Manage Books");
			writer.print(ENDPOINT_END);
		}
	}
}

添加resources

resources文件夹下,执行如下步骤:

  • 添加文件夹META-INF
  • META-INF文件夹下添加文件夹services
  • serivces文件夹下添加文件com.sap.cds.adapter.IndexContentProviderFactory
  • 在刚刚创建的文件中,添加一行纯文本:customer.demo_service.index.UiIndexContentProviderFactory

更新 application.yaml

更新resource文件夹下的application.yaml

让Spring Boot支持Resource的Static Folder:

spring.web.resources.static-locations: "file:./app/"

运行结果

这时,再运行如下命令编译程序:

mvn clean install

再运行命令打开程序:

mvn spring-boot:run

页面效果——这时UI endpoints出现了:
运行结果

点击Manage Books链接,可以打开Fiori Elements

Fiori Elements

更新UiIndexContentProviderFactory

上面只添加了manage-books程序,还要添加browse-books

@Override
public void writeContent(PrintWriter writer, String contextPath) {
	writer.print(ENDPOINT_START);
	writer.printf(ENDPOINT, contextPath + "/manage-books/webapp/index.html?sap-ui-xx-viewCache=false", "Manage Books");
	writer.printf(ENDPOINT, contextPath + "/browse-books/webapp/index.html?sap-ui-xx-viewCache=false", "Browse Books");
	writer. Print(ENDPOINT_END);
}

代码库 (Gitcode)

与本文配套的代码

参考README.md关于各个branch的详细介绍。

本篇对应的branch2_withfe

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值