我的同事问我这个问题:只要你了解智能控制的原理,你就可以回答这个问题。答案是:智能控件可以像普通控件一样在xml视图中定义和使用,但必须结合OData注解,否则没有意义。以智能控制中的智能字段为例。详细原理在我的博客Currencyexample-howSmartfieldworks中有介绍。总结起来就是:1.SmartField本身也是一个控件,更准确的说是一个没有UI输出的控件,只是一个外壳。UI渲染时,smartfield会演变成输入框,下拉列表,datepicker,或者F4help,这些都需要一个角色来告诉smartfield,这个角色就是Odata注解。Metadata中定义的注解将决定智能字段最终的输出方式。2.智能控件可以脱离智能模板框架单独使用。也就是说,你可以创建一个非常简单的xml视图,然后在这个视图中像普通控件一样使用智能控件,没有任何问题。请参考这个例子(完整的实现代码在文末):在XML视图中,我定义了一个Smart字段并将其绑定到Price属性。在运行时,它会自动呈现为带有单位的货币字段。后面的EUR货币字段像魔术一样生成,其实就是注解sap:unit="CurrencyCode"的作用。至于框架是如何解析注解并自动生成货币字段的,相关代码和分析在上文博客Currencyexample-howSmartfieldworks中。Fiori应用的目录结构:源码地址
