Odata 如何显示展开元素的错误消息?
我有一个Odata 如何显示展开元素的错误消息?,odata,sapui5,Odata,Sapui5,我有一个SAPUI5应用程序,并使用以下机制在验证失败时显示错误(): 此解决方案适用于正常输入: 我所说的正常元素是什么意思 实际上,当它是一个显示扩展值的输入元素时,它不起作用,而当它没有扩展时,它起作用 例如,当元素为: <Input value="{ path: 'BusinessAddress/PostOfficeBox', type : 'sap.ui.model.type.String' , constraints:{search: '^[0-9]*$'}}"> B
SAPUI5
应用程序,并使用以下机制在验证失败时显示错误():
此解决方案适用于正常输入:
我所说的正常元素是什么意思
实际上,当它是一个显示扩展值的输入元素时,它不起作用,而当它没有扩展时,它起作用
例如,当元素为:
<Input value="{ path: 'BusinessAddress/PostOfficeBox', type : 'sap.ui.model.type.String' , constraints:{search: '^[0-9]*$'}}">
BusinessAddress
是已展开的实体ContactSet
的外键
及
显然,问题在于sap.ui.core.message.message
实例的目标。
因此,我的问题是如何将错误消息作为扩展元素的目标 需要将处理器从
oDataModel
更改为ControlMessageProcessor
。这意味着我们可以寻址控件本身,将错误消息绑定到其正确的显示位置,而不是模型中绑定数据的路径。大概是这样的:
var oMessageProcessor = new sap.ui.core.message.ControlMessageProcessor();
var oMessageManager = sap.ui.getCore().getMessageManager();
oMessageManager.registerMessageProcessor(oMessageProcessor);
var oInput = new sap.m.Input({
id: "myInputId",
value: { path: "/Products(1)/Price" , type: new sap.ui.model.type.Float() }
});
oMessageManager.addMessages(
new sap.ui.core.message.Message({
message: "ZIP codes must have at least 23 digits",
type: sap.ui.core.MessageType.Error,
target: "/myInputId/value",
processor: oMessageProcessor
})
);
通过以控件本身为目标,将扩展属性绑定到控件并不重要
target: "/ContactSet('CO1')/BusinessAddress/PostOfficeBox" ==> for expanded ones
target: "/ContactSet('CO1')/MobilePhone"
var oMessageProcessor = new sap.ui.core.message.ControlMessageProcessor();
var oMessageManager = sap.ui.getCore().getMessageManager();
oMessageManager.registerMessageProcessor(oMessageProcessor);
var oInput = new sap.m.Input({
id: "myInputId",
value: { path: "/Products(1)/Price" , type: new sap.ui.model.type.Float() }
});
oMessageManager.addMessages(
new sap.ui.core.message.Message({
message: "ZIP codes must have at least 23 digits",
type: sap.ui.core.MessageType.Error,
target: "/myInputId/value",
processor: oMessageProcessor
})
);