如何以编程方式重置本地化的属性值

2020-09-05 08:42发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们!

这是我需要做的。 假设数据库中有一项为假设的本地化属性设置了en和de locales的项目,例如 attribute = [en:beer,de:bier] 。 我为item属性设置了新的语言环境值,例如 [es:cerveza,pl:pivo] 。 如果我简单地打电话给:

  modelService.setAttribute(item,'attribute',[es:cerveza,pl:pivo]);
  

不会丢弃先前的值,因此属性值是 [en:beer,de:bier,es:cerveza,pl:pivo] ,而不只是 [es:cerveza ,pl:pivo]

我发现打了这些电话

  modelService.setAttribute(item,'attribute',null);
  modelService.setAttribute(item,'attribute',[es:cerveza,pl:pivo]);
  

产生所需的结果。 但是,我担心如果"属性"在items.xml中具有 optional = false 。 在这种情况下,第一次调用设置 null 无效,并且旧值不会重置。 因此,我的问题是:通过始终用新值重置以前的值来实现所需结果的安全可靠的方法是什么?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们!

这是我需要做的。 假设数据库中有一项为假设的本地化属性设置了en和de locales的项目,例如 attribute = [en:beer,de:bier] 。 我为item属性设置了新的语言环境值,例如 [es:cerveza,pl:pivo] 。 如果我简单地打电话给:

  modelService.setAttribute(item,'attribute',[es:cerveza,pl:pivo]);
  

不会丢弃先前的值,因此属性值是 [en:beer,de:bier,es:cerveza,pl:pivo] ,而不只是 [es:cerveza ,pl:pivo]

我发现打了这些电话

  modelService.setAttribute(item,'attribute',null);
  modelService.setAttribute(item,'attribute',[es:cerveza,pl:pivo]);
  

产生所需的结果。 但是,我担心如果"属性"在items.xml中具有 optional = false 。 在这种情况下,第一次调用设置 null 无效,并且旧值不会重置。 因此,我的问题是:通过始终用新值重置以前的值来实现所需结果的安全可靠的方法是什么?

付费偷看设置
发送
1条回答
compass1988
1楼 · 2020-09-05 09:09.采纳回答

我找到了解决方案。 我认为有效的方法,即 modelService.setAttribute(item,'attribute',null)通常不起作用,因为此方法仅重置默认语言环境值,而不重置整个本地化值映射,正如我期望的那样。 因此,要使其正常工作,我必须使用 CommonI18NService 检索所有支持的语言环境,然后将每个支持的语言环境的localized属性值重置为null。 像这样:

  commonI18NService.getAllLanguages()。stream()
          .map(commonI18NService :: getLocaleForLanguage)
          .forEach(loc-> modelService.setAttribute(item," attribute",loc,null))
  

在设置新的语言环境值之前,这总是可靠地重置所有先前的语言环境值。 如果属性在类型系统中不是 optional ,则必须提供默认语言环境值,否则将引发异常。

一周热门 更多>