Smart template的控件能否当成普通控件来用

news/2024/9/17 7:09:49

我的同事问过我这个问题:

只要弄清楚Smart control的原理,就能回答这个问题。

答案是: smart control可以像普通的控件一样在xml view中被定义和使用,但是必须结合OData annotation,否则没有意义。以Smart control里的Smart field为例,详细原理在我的博客Currency example – how Smart field works里介绍。

概括起来,就是:

1. Smart field本身也是一个控件,更准确的说是一个没有UI输出的控件,只是一个壳。在UI render的时候,smart field会演变成input field,还是drop down list,还是date picker,还是F4 help,这些都需要有一个角色来告诉smart field,这个角色就是Odata annotation。Metadata里定义的annotation会决定smart field最后的输出方式。

2. Smart control可以脱离Smart template框架单独使用。也就是说您可以创建一个很简单的xml view,然后在这个view里像使用普通控件那样使用smart control,没有任何问题。

请参考这个例子(完整实现代码在文末):

在XML view里,我定义了一个Smart field,绑到Price这个property上。

在runtime时,它会自动被渲染成带单位的currency field。后面那个EUR的currency field就像变戏法一样生成了,其实就是sap:unit="CurrencyCode"这个annotation起的作用。至于框架是如何解析annotation并自动生成currency field,相关的代码和分析都在上述提到的博客Currency example – how Smart field works里。

该Fiori应用的目录结构:

源代码地址


http://lihuaxi.xjx100.cn/news/238857.html

相关文章

菜鸟也来学习ORACLE(1)_linux下安装oracle 11g

加入 oracle Club 之前,学长给我们开了个小会 说是看看我们加入的意愿,哎哎 其实直无聊,但是大体比较重视linux 服务器的搭建 以及在linux 下安装oracle 搭建一个oracle 环境吧、我就想这东西能有多难,于是回来就搭建起了&#x…

区块链分别解读-名词解释

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 今天发一篇关于区块链中名词解释,比如区块、公有链、私有连、私钥公钥等,这些都会在文章中那个提到,希望对大家有些帮助。 区块:block记录一段时间内…

[HTTP协议]基础篇-待完结

文章目录输入网址后回车输入网址后回车 简单的浏览器HTTP请求过程: 浏览器从地址栏输入中获取服务器IP地址和端口号浏览器用TCP的三次握手与服务器建立连接浏览器向服务器发送拼好的报文服务器收到报文后处理请求,同样拼好报文再发给浏览器浏览器解析报…

如何在React中使用Typescript

TypeScript can be very helpful to React developers.TypeScript对React开发人员可能非常有帮助。 In this video, Ben Awad teaches how to use Typescript in React and shares some of its benafits. He also tells about a great boilerplate for TypeScript React proje…

启动hadoop的节点

1.启动hadoop的节点 start-dfs.sh 本文转自 素颜猪 51CTO博客,原文链接:http://blog.51cto.com/suyanzhu/1959242

区块链是什么,是否是一个骗局或者是不是有弊端??

想知道更多区块链技术知识,请百度【链客区块链技术问答社区】 区块链是什么我想大家都已经知道了,所以就不再细说了毕竟点开这篇文章如果你都不知道区块链是什么的话,就没什么必要看了。 那么我们就谈谈区块链的作用: 1.我们社会…

用模板实现单例模式(线程安全)、模板方式实现动态创建对象

一、用模板实现单例模式 在前面的文章中,用过多种方法实现单例模式,现在用模板方式来实现: 为了实现线程安全,需要在linux 下使用pthread_mutex_t 加锁,请使用g 编译并需要链接 -lpthread 使用的是double-check lock&a…

jstl c:choose、c:when和c:otherwise标签

在用spring mvc中&#xff0c;页面前端老用jstl&#xff0c;记录一下。 <c:choose>、<c:when>和<c:otherwise>在一起连用&#xff0c;可以实现Java语言中的if-else语句的功能。例如以下代码根据username请求参数的值来打印不同的结果&#xff1a; <c:choo…