You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

表达式绑定语法合规仍报FormatException,sap.m.Button显隐控制问题

解决SAPUI5表达式绑定中visible属性的FormatException问题

问题分析

你遇到的报错是因为SAPUI5默认会将绑定表达式中引用的单个属性值,自动转换为目标控件属性的类型(visible属性要求布尔值)。当你直接引用${user-management>/alias}这类字符串属性时,UI5会尝试把字符串"TESTUSER"转为布尔值,这显然不符合预期,从而抛出FormatException。

解决方案

在表达式绑定的属性引用后添加, targetType:'any',告诉UI5不要自动转换该属性的类型,保留原始的字符串值,这样就能正常进行相等判断:

<Button xmlns="sap.m" visible="{= ${user-management>/alias, targetType:'any'} === ${recipe-service>Author/alias, targetType:'any'} }" />

如果你更倾向于使用格式化函数的写法,也可以通过复合绑定的方式,给每个绑定部分指定targetType:'any':

<Button xmlns="sap.m">
  <visible>
    <Binding 
      parts="[
        {path: '/alias', model: 'user-management', targetType: 'any'},
        {path: 'Author/alias', model: 'recipe-service', targetType: 'any'}
      ]" 
      formatter="function(userAlias, authorAlias) {
        return userAlias === authorAlias;
      }" 
    />
  </visible>
</Button>

原理说明

控制台提示里的targetType:'any'作用是禁用UI5默认的类型转换逻辑,让绑定的属性值以原始类型(这里是字符串)传入表达式或格式化函数,这样两个字符串的相等比较就能正确执行,最终返回布尔值给visible属性,符合控件要求。

内容的提问来源于stack exchange,提问作者babdo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 10:18:18