Oracle ADF开发校园管理系统遇ADF_FACES-60098类型转换异常求助
根因分析
报错核心为类型转换失败:ADF在页面生命周期的UPDATE_MODEL_VALUES阶段,尝试将字符串值Pass转换为Integer类型写入模型属性时触发异常。
你认为只有学生ID为数字类型、其余属性为字符串的认知和实际配置存在偏差,问题出在两层配置不匹配:
- 业务组件层的
ResultStudentResultView视图对象(或对应底层实体对象)中,ResultYear属性的Java类型被错误设置为java.lang.Integer,而非你预期的字符串类型 ResultYear绑定的下拉列表选项中存在值为Pass的字符串选项,和属性配置的Integer类型不兼容,导致写入时转换失败
你贴出的JSFF页面绑定代码本身语法没有错误,问题集中在底层模型和LOV配置上。
排查解决步骤
- 检查业务组件配置:打开
ResultStudentResultView视图对象编辑界面,找到ResultYear属性,确认其Java类型配置,若为Integer则修改为java.lang.String,同步核对对应实体对象的同名字段类型,保持二者一致 - 核对下拉列表(LOV)配置:查看
ResultYear关联的列表值定义,确认所有选项的返回值类型和属性类型匹配,如果你确实需要在年份字段存储Pass这类字符串值,要确保LOV返回值类型为String,没有配置错误的数值映射规则 - 校验页面绑定关系:确认代码中
af:selectOneChoice的value属性绑定的#{row.bindings.ResultYear.inputValue}确实对应年份字段,没有误绑定到分数、成绩状态这类你误以为是字符串但实际配置为数值的字段 - 清理缓存重启验证:修改配置后清理项目缓存、重启ADF服务,避免旧的绑定配置缓存导致验证异常
你提供的JSFF代码片段如下供参考:
<af:column sortProperty="#{bindings.ResultStudentResultView.hints.ResultYear.name}" filterable="true" sortable="true" headerText="#{bindings.ResultStudentResultView.hints.ResultYear.label}" id="c7"> <af:selectOneChoice value="#{row.bindings.ResultYear.inputValue}" label="#{row.bindings.ResultYear.label}" required="#{bindings.ResultStudentResultView.hints.ResultYear.mandatory}" shortDesc="#{bindings.ResultStudentResultView.hints.ResultYear.tooltip}" id="soc2"> <f:selectItems value="#{row.bindings.ResultYear.items}" id="si2"/> <f:validator binding="#{row.bindings.ResultYear.validator}"/> </af:selectOneChoice> </af:column>
内容的提问来源于stack exchange,提问作者Akshay
相关产品推荐
相关产品推荐

