GeneXus17中API Object接收SDT参数报未初始化错误如何解决
解决方案
根本原因
GeneXus 17的API Object组件参数解析逻辑比旧版PRCRest更严格,不会自动初始化嵌套SDT类型的入参,你直接将SDT类型的&identificacao作为独立顶层入参定义时,生成Java代码时没有自动加实例化逻辑,就会抛出变量未初始化的编译错误。
修复方案(二选一即可)
方案1:封装顶层请求SDT(推荐)
- 新建一个根SDT(例如命名为
CertidaoNegativaImovelRequest),添加两个属性:identificacao:类型选择你现有的identificacao SDTdimensao:类型选择字符串
- 修改API Object的路由定义,替换原有入参:
Routes{ [RestMethod(POST)] obterCertidaoNegativaImovel(in:&request, out:&pdf, out:&codigo, out:&mensagem) => api.poupatempo.obterCertidaoNegativaImovel(&request.identificacao, &request.dimensao, &pdf, &codigo, &mensagem); } - 清理项目后重新构建即可,原有请求JSON结构无需任何改动,完全兼容。
方案2:手动初始化SDT入参
无需修改入参定义,打开API Object的事件编辑界面,在BeforeExecute事件中添加初始化代码:
&identificacao = new 你的SDT类名()
将你的SDT类名替换为你实际的identificacao对应的SDT类型名即可,重新构建后错误会消失。
内容的提问来源于stack exchange,提问作者Anderson Porcari
相关产品推荐
相关产品推荐

