我有一个xe:jsonRpcService,我想传递给csjs类。这怎么可能?
服务:
formHelper = new FormHeler( rpcServices ) ;
在输出脚本中调用我的类:
function Formhelper( service ) {
//...
this.loadEntity = function( id ) {
//...
resultObj = service.loadEntity( id ) ;
//...
}
}
csjs类:
public HashMap generateMsgFiveDaysCompltdReport(
final SearchCriteria msgCriteria,
String[] queueselected,
boolean flag) throws SQLException {
HashMap msgInitiatedData = null;
if (logger.isDebugEnabled()) {
logger.debug("generateMsgInitiatedReport of ReportsDelegate - start");
}
logReportRun("Requested", msgCriteria.getReportName(),
msgCriteria.getStartDate(), msgCriteria.getEndDate(),
msgCriteria.getQueueDesc(), "", msgCriteria.getProfileId());
TimeTracker tt = new TimeTracker();
tt.start();
msgInitiatedData = reportsDAO.generateMsgFiveDaysCompltdReport(msgCriteria, queueselected,flag);
tt.stop();
String totalTime = Long.toString(tt.getTotalTime());
logReportRun("Completed", msgCriteria.getReportName(),
msgCriteria.getStartDate(), msgCriteria.getEndDate(),
msgCriteria.getQueueDesc(), totalTime, msgCriteria.getProfileId());
if (logger.isDebugEnabled()) {
logger.info("generateMsgInitiatedReport-End");
}
return msgInitiatedData;
}
在类中使用rpcServices.loadEntity可以正常工作。但是我想把它作为参数传递,所以我可以使用不同服务的类。
rpcServices作为类构造函数的参数不起作用。是否有另一种方法可以传递对服务的引用并使其在类中可用?
答案 0 :(得分:0)
rpcServices
是REST服务端点的服务器端集合(this.methods
)。您无法将该集合传递给CSJS,您只能传递其中一个端点的结果。
将其视为试图将SSJS脚本库传递给CSJS函数。
答案 1 :(得分:0)
谢谢保罗。通过将服务名称传递给类来实现它。然后我使用eval来调用rpc方法:
var serviceName = "rpcServices" ;
formHelper = new FormHelper( serviceName ) ;
function FormHelper( serviceName ) {
this.serviceName = serviceName ;
//...
this.loadEntity = function( id ) {
var rpcResultObj = eval( this.serviceName + ".loadEntity( \"" + id + "\" )" ) ;
}
//...
}
现在我可以将FormHelper方法用于不同的服务。