gpt4 book ai didi

java - CXF如何设置原因标记的区域设置?

转载 作者:行者123 更新时间:2023-12-01 12:21:29 27 4
gpt4 key购买 nike

我有一个基于 CXF 的 Web 服务。当我使用 CXF 肥皂故障时,默认情况下我得到以下格式的原因标签:

     <soap:Reason>
<soap:Text xml:lang="en">Le service n’est pas accessible.</soap:Text>
</soap:Reason>

我想要的是如何更改原因文本的区域设置到其他语言?例如:fr即:我怎样才能得到以下结果:

<soap:Reason>
<soap:Text xml:lang="fr">Le service n’est pas accessible.</soap:Text>
</soap:Reason>

最佳答案

问题已解决:)

经过几个小时的调试,我发现<soap:Text xml:lang="en">中使用的语言被硬编码在拦截器中 org.apache.cxf.binding.soap.interceptor.Soap12FaultOutInterceptor事实上,语言的值(value)是通过getLangCode()方法获得的。定义在内部类 org.apache.cxf.binding.soap.interceptor.Soap12FaultOutInterceptor.Soap12FaultOutInterceptorInternal这是用于获取语言的方法的代码,您可以看到它几乎将语言硬编码为 en

  private String getLangCode() {        
String code = LOG.getResourceBundle().getLocale().getDisplayLanguage();
if (StringUtils.isEmpty(code)) {
return "en";
}
return code;
}

我使用的CXF版本是2.2.6 ,由于遗留系统仅支持java 5,我被迫使用它,但我发现这个问题从版本2.6.7开始就得到了修复。在此版本中,一个新属性:lang已添加到父类(super class) org.apache.cxf.interceptor.Fault指定语言。在肥皂故障的代码中,这是通过简单地执行以下操作来完成的:

fault.setMessage(reason);
fault.setLang("fr");

就是这样:)

关于java - CXF如何设置原因标记的区域设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26634446/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com