You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebLogic 12c部署的企业应用出现Spring属性不可读异常求助

问题分析与解决:org.springframework.beans.NotReadablePropertyException 关于'narrative'属性

这个异常的核心逻辑很清晰:Spring框架在尝试访问FreeFormat bean的narrative属性时,找不到对应的可读属性(也就是符合JavaBean规范的getter方法),而且从你给出的实体类代码来看,这个类里根本就没有定义narrative这个字段。下面我帮你拆解可能的原因和对应的解决办法:

可能的原因及排查方向

  • 配置/代码中错误引用了不存在的属性名:
    你需要排查所有和FreeFormat相关的配置或业务代码,定位哪里误用了narrative:

    • 比如Spring MVC的页面模板(JSP、Thymeleaf等)里,是不是写了类似th:field="*{narrative}"或者<form:input path="narrative"/>的代码,但实际实体类里对应的字段是openText或者standardText?
    • 或者在SpEL表达式(比如@Value注解、XML配置里的属性引用)中错误使用了narrative?
    • 还有可能是ORM框架(比如MyBatis、Hibernate)的映射文件里,把字段名写错成了narrative,而非实体类中存在的字段?
  • 实体类的getter方法不符合JavaBean规范:
    就算你用的是正确的字段名,如果getter方法的命名不规范,Spring也会识别不到属性。比如字段openText的getter必须是getOpenText()(字段首字母大写,前缀加get),而不是getopenText()或者getText()这类错误写法。

对应的解决方法

  1. 修正属性引用:
    找到所有错误引用narrative的地方,把它替换成FreeFormat类中实际存在的字段名(比如openText或standardText),同时确保这些字段都有正确的getter/setter方法。

  2. 补充字段及规范getter/setter:
    如果业务逻辑确实需要narrative这个属性,那就在FreeFormat类中添加该字段,并生成符合JavaBean规范的getter和setter方法:

    public class FreeFormat implements Serializable {
        private String standardText;
        private String openText;
        private String narrative; // 添加需要的字段
    
        // 规范的getter方法
        public String getNarrative() {
            return narrative;
        }
    
        // 规范的setter方法
        public void setNarrative(String narrative) {
            this.narrative = narrative;
        }
    
        // 其他字段的getter/setter...
    }
    
  3. 检查WebLogic部署缓存:
    由于是在WebLogic 12c环境部署,有时候修改代码后如果没有重新打包部署,WebLogic可能还在使用旧的类文件。建议清理WebLogic的临时目录(比如domain_name/servers/server_name/tmp),然后重新部署应用,确保新的类文件被正确加载。

内容的提问来源于stack exchange,提问作者Victor Guo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:29:44