本文目录
- 本系列之前的文章
- 本篇之前的运行效果
- 修改`pom.xml`
- 添加新的Dependency
- 更新plugin
 
- 添加新的Controller
- 创建`index`目录
- 添加`UiIndexContentProviderFactory.java`
 
- 添加`resources`
- 运行结果
- 更新`UiIndexContentProviderFactory `
- 代码库 (Gitcode)
本系列之前的文章
本系列之前的文章:
SAP CAP篇一:快速创建一个Service,基于Java的实现
 SAP CAP篇二:为Service加上数据库支持
 SAP CAP篇三:定义Model
 SAP CAP篇四:为CAP添加Fiori Elements程序(1)
 SAP CAP篇五:为CAP添加Fiori Elements程序(1)
本篇之前的运行效果
在完成 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
在build的plugins下,修改下面这个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
运行结果
这时,再运行如下命令编译程序:
mvn clean install
再运行命令打开程序:
mvn spring-boot:run
页面效果——这时UI endpoints出现了:
 
点击Manage Books链接,可以打开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的详细介绍。
本篇对应的branch是2_withfe。

















