我有以下webscript(disable-affiliate.put.js
)
var spaceNode = customSpacesService.getAffiliatedSpace(args.id) ;
if(spaceNode == null){
status.code = 404;
status.message = "Can't find affiliated";
status.redirect = true;
}
spaceNode.addAspect ("cnrps:replaceable");
spaceNode.properties["cnrps:motifReplace"] = args.motif;
var affNonValides = customSpacesService.getEntrepotsDesAffiliesSupprimesErrones();
spaceNode.move(affNonValides);
问题是当spaceNode
为空时,应该像往常一样返回状态模板,但会抛出一个异常,说Cannot call method "addAspect" of null
很明显,重定向没有发生,脚本执行继续,请帮助...
答案 0 :(得分:2)
Web脚本引擎将执行您的脚本,之后将检查status
变量以了解如何处理原始请求。这意味着您的Javascript 的执行流程不会在
status.redirect = true;
如果你看一下它,它实际上只是一个赋值而不是一个方法调用。
将使用spaceNode
的代码放在else分支中,你就可以了:
var spaceNode = customSpacesService.getAffiliatedSpace(args.id) ;
if(spaceNode == null){
status.code = 404;
status.message = "Can't find affiliated";
status.redirect = true;
}
else {
spaceNode.addAspect ("cnrps:replaceable");
spaceNode.properties["cnrps:motifReplace"] = args.motif;
var affNonValides = customSpacesService.getEntrepotsDesAffiliesSupprimesErrones();
spaceNode.move(affNonValides);
}