欢迎使用普元产品知识库,本知识库包含普元应用开发平台EOSPlatform,流程平台BPS,企业服务总线ESB,微服务平台Microservice,运维管理平台Devops,数据集成平台DI
欢迎使用普元文档库
【问题描述】
在使用EOS7.5的流程快速实施框架时,发现一个非常奇怪的问题,在nui控件中使用url=xxx.biz.ext?param=xxx的方式来请求数据时,后台的逻辑流能响应请求,但是无法获得参数的值。
以下是尝试调试问题的过程:
不使用在nui控件的属性中添加url的方式,而是在script代码块中用nui.ajax的方式,并且url的值设置为url=xxx.biz.ext?param=xx的形式,依然无法在后台获得参数的值。
因为在EOS7.2版本中可以正常使用两种方式来传递参数,仔细辨别两个版本的请求中HTTP Header中的差异,发现7.5版本ajax请求的参数中,contentType设置为了application/json,如果强制在ajax请求的参数中设置contentType为text/html,后台就可以正常获取参数了。从而认为7.5相比7.2版本在nui的ajax请求操作中有逻辑的不同。
经过调试发现,7.5版本中引用了一个新的js文件,是nui-ext.js,文件中只包含一个方法即nui.ajax方法,这个方法覆盖了nui-min.js中对应的方法。对比发现,两者的处理逻辑是有不同的:
nui-ext.js文件中去掉了对于后缀是否是.ext的判断,无论后缀是什么情况,只要contentType没有值,就默认设置为application/json,因此当形如url=xxx.biz.ext?param=xxx的方式来调用逻辑流时,7.2版本中并不会去增加contentType的值,从而可以正常调用,但是在7.5版本中,会强制增加contentType为application/json从而后台获取不到参数值。
目前有两种方式可以解决这个问题,一种是不在nui控件中设置url,而统一在script代码块中使用ajax的方式来调用,并且设置contentType的值,或者直接使用jquery的ajax方法,另一种方式是直接在bizform页面中,注释掉对nui-ext.js文件的引用。
疑惑:
考虑到7.5版本专门增加了这个文件,想问一下研发这边这个文件增加的作用是什么,要特意改变了原来方法的逻辑;然后是否以后都无法在控件中使用url加上参数的方式来请求后台的数据。
【解答】
流程状态显示的请求头中需要设置 contentType为了application/json