是否可以强制要求SAPUI5智能表中的属性,以便用户在编辑时不能将字段留空?
我发现this document说应该可以在metadata.xml文件中的Property上设置必需的字段控件,注释如下:
<Property Name="NameLast" Type="Edm.String" Nullable="false" MaxLength="40" sap:label="Last name" sap:field-control="7" />
但是使用此设置我在控制台中收到以下错误:
2017-04-14 11:37:36.691429 MockServer: Resource not found for the segment '7'
2017-04-14 11:37:36.707985 The following problem occurred: HTTP request failed404,Not Found,{"error":{"code":404,"message":{"lang":"en","value":"Resource not found for the segment '7'"}}} -
编辑:
后来我发现sap:field-control不应该包含数字,而是包含该数字的另一个属性的路径表达式。但是这也行不通:
<Property Name="NameLast" Type="Edm.String" Nullable="false" MaxLength="40" sap:label="Last name" sap:field-control="Name_fc" />
<Property Name="Name_fc" Type="Edm.Byte" />
Name_fc属性的值为'7'。我现在没有看到任何控制台错误,但是我仍然可以将输入(NameLast)字段留空而不进行任何验证并将其发送到OData服务,这不是我期望的。
以下是sap中使用必填字段的示例的链接。我不知道他们是如何做到的。 https://sapui5.netweaver.ondemand.com/sdk/explored.html#/sample/sap.ui.comp.sample.smartfield/code/SmartField.view.xml
答案 0 :(得分:0)
对于OData v2,属性上的sap:field-control注释可以是 用于指定该字段是否为必填字段。
<Property Name="Customer" ... sap:field-control="mandatory"/>
<Property Name="CompanyCode" ... sap:field-control="mandatory"/>
https://sapui5.hana.ondemand.com/#docs/api/symbols/sap.ui.comp.smartfield.SmartField.html
答案 1 :(得分:0)
实体的强制性属性必须为nullable="false"
。就是这样。
查看链接中的智能字段示例:
<Property Name="Name" Type="Edm.String" Nullable="false"
MaxLength="30" sap:label="Name" sap:creatable="false"
sap:quickinfo="Property annotation DataFieldWithUrl"
sap:updatable="true" sap:sortable="false" />
顺便说一下。感谢分享您的智能表示例!
答案 2 :(得分:0)
根据我的理解,有两个选项:
1)将特定属性定义为强制性 - &gt;的可为空=&#34;假&#34; 强>
2)将一个属性链接到实体中的另一个属性,&#34; field-control&#34;。 该字段控件可以包含数字和&#34; 7&#34;意味着强制性。
选项2的链接可以在MPC_EXT类中完成(重新定义define方法)。 &#34;字段控制&#34;中的实际值属性在get_entity / get_en
中设置但是我也遇到了智能表的问题。空白时,必填字段不会亮起红色。
答案 3 :(得分:0)
在“对象页面”扩展控制器中以蛮力方式进行。
var oField = this.getView().byId(<FieldId>)
oField.getDataProperty().property.nullable = "false" or "true".
"false" and "true" must be a string.
要将布尔值转换为字符串,请使用<boolean>.toString();