HAPI FHIR 5.2 R4读取API使用_summary=text报csq空指针异常求助
问题根因
从报错堆栈可以定位到问题核心:
- HAPI FHIR 5.2版本处理
_summary=text参数时,会直接读取资源的text.div字段内容写入响应流 - 当目标Practitioner资源的
text.div为null时,框架未做空值判断直接将null传入Spring Security包装的响应Writer的append方法 - Spring Security的
OnCommittedResponseWrapper类未对入参做null校验,直接调用CharSequence.length()触发空指针异常
其他_summary参数值不会触发text内容的读取写入逻辑,因此可以正常返回。
解决方案
方案1:快速规避
给所有存储的FHIR资源补全text.div字段值,无实际文本时可赋值为空字符串"",即可避免空指针触发。
方案2:版本修复
该问题为HAPI FHIR 5.2版本的已知缺陷,升级HAPI FHIR到5.4.0及以上版本即可,官方已在后续版本的RestfulServerUtils.streamResponseAsResource方法中增加了空值判断逻辑,空的text内容会自动替换为空字符串后写入响应。
方案3:低版本兼容适配
如果无法升级依赖版本,可自定义HAPI FHIR服务端响应拦截器,在资源返回前的拦截钩子中统一校验所有资源的Narrative节点:若text为null或text.getDiv()为null,手动创建Narrative对象并将div属性设置为空字符串。
内容的提问来源于stack exchange,提问作者Onkar Jadhav
相关产品推荐
相关产品推荐

