我正在尝试在 wso2-greg发布者中用另一个名为的资产的计数器字段 currentValue 来预填充我的自定义资产的创建形式的文本字段>顺序。之后,我必须在1中增加 currentValue 的值。
为此,我在文档https://docs.wso2.com/display/ES210/asset.render+Property+Definitions之后覆盖[custom-asset] /asset.js文件中的 renderer的create方法。但是,当我加载创建表单时,它会显示一个空白屏幕,并且不会在服务器日志中显示错误。
尝试查找问题后。我注意到评论资产管理器的更新方法可以解决黑屏问题,但是我必须更新该值,有人可以告诉我为什么会这样吗?谢谢
asset.renderer = function(ctx) {
var assetManager = function(ctx) {
var rxt = require('rxt');
var type = "sequence";
var am = rxt.asset.createUserAssetManager(ctx.session, type);
return am;
};
var padLeadingZeros = function (num, size) {
var s = num+"";
while (s.length < size) s = "0" + s;
return s;
}
var generateBusinessServiceCode = function (sequenceAsset) {
log.info('sequenceAsset result: ' + stringify(sequenceAsset));
var prefix = sequenceAsset.attributes.overview_prefix;
var currentValue = sequenceAsset.attributes.overview_currentValue;
return prefix + padLeadingZeros(currentValue, 4);
}
return {
create: function(page) {
var am = assetManager(ctx);
var query = {};
query.overview_name = 'BusinessServiceCode';
var assets = am.search(query);
var sequenceAsset = assets[0];
var generatedCode = generateBusinessServiceCode(sequenceAsset);
sequenceAsset.attributes.overview_currentValue = Number(sequenceAsset.attributes.overview_currentValue) + 1;
// commenting the following line fixes the blank screen problem
am.update(sequenceAsset);
var tables = page.assets.tables;
var codeAttribute = 'code';
for (var index in tables) {
var table = tables[index];
if ((table.name == 'overview') && (table.fields.hasOwnProperty(codeAttribute))) {
table.fields[codeAttribute].value = generatedCode;
}
}
}
};
};