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
相关产品推荐
相关产品推荐

