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

Odoo16中Owl JS文件调用模型函数出现404错误的解决方法

解决Odoo 16 Owl组件RPC调用404错误(URL显示[object%20Object])

问题原因

该错误是因为RPC调用的参数处理异常,导致Odoo将配置对象直接当作URL路径解析,最终生成了编码后的[object%20Object]路径,触发404。

修复方案

1. 确保RPC服务的正确注入

首先确认组件中rpc服务的获取方式正确,必须在Owl组件的setup函数中通过useService注入:

import { Component, useService } from "@odoo/owl";

export class YourComponent extends Component {
    setup() {
        // 正确注入RPC服务
        this.rpc = useService("rpc");
    }
}

2. 修正RPC调用代码

你的调用格式本身合规,但建议改用try/catch替代链式调用,同时确保代码在组件的异步方法中执行:

async fetchDesignationEmpData() {
    try {
        const data = await this.rpc({
            model: 'hr.kpi.emp.desig',
            method: 'get_desig_emp',
            args: []
        });
        console.log(data);
    } catch (err) {
        console.error(err);
    }
}

3. 验证后端模型方法

  • 确认hr.kpi.emp.desig模型存在,且get_desig_emp是无下划线前缀的公共方法
  • 给方法添加正确的Odoo装饰器,比如模型级方法用@api.model:
from odoo import models, api

class HrKpiEmpDesig(models.Model):
    _name = 'hr.kpi.emp.desig'

    @api.model
    def get_desig_emp(self):
        # 此处编写你的业务逻辑
        return "测试数据"

4. 检查组件注册与缓存

  • 确认组件所在模块的__manifest__.py中已正确声明静态资源路径
  • 执行模块更新命令odoo-bin -u 你的模块名,清除Odoo前后端缓存后重启服务

5. 额外排查点

  • 打开浏览器开发者工具的「网络」标签,查看请求的完整详情,确认参数是否正确传递
  • 检查控制台是否有其他前置错误(比如组件初始化失败、RPC服务未注入成功)

内容的提问来源于stack exchange,提问作者Ammad Naeem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:17:09