Guidewire PC Contact自定义字段绑定时抛出ClassCastException问题咨询
异常触发原因
Contact是Person、Company两个实体的公共父类,你当前使用的ContactNameInputSet上下文的contact变量可能是任意子类型实例,你直接写(contact as Company)属于强制类型转换,当contact是Person类型实例时,强转就会抛出你遇到的ClassCastException。- 官方
Primary Email字段没有报错的核心原因是你漏看了它的配套配置:该组件默认配置了rendered = contact instanceof Company的渲染规则,只有当联系人类型为公司时才会渲染该组件,永远不会出现Person实例走强转逻辑的场景,因此不会报错。
解决方案
你可以任选一种方式修复:
- 给你的自定义InputText组件增加渲染条件,仅公司类型联系人时展示:
id = webAddress label = "Web Address" value = (contact as Company).WebAddress_Ext rendered = contact instanceof Company
- 改造value属性的写法,用安全转换兼容多类型场景,转换失败自动返回空值:
id = webAddress label = "Web Address" value = (contact as? Company)?.WebAddress_Ext
- 新增类型判断的三元表达式做兼容:
id = webAddress label = "Web Address" value = contact instanceof Company ? (contact as Company).WebAddress_Ext : null
内容的提问来源于stack exchange,提问作者user2636874
相关产品推荐
相关产品推荐

