将xe:jsonRpcService传递给csjs类

时间:2016-12-13 21:08:33

标签: xpages

我有一个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作为类构造函数的参数不起作用。是否有另一种方法可以传递对服务的引用并使其在类中可用?

2 个答案:

答案 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方法用于不同的服务。